Регулярные выражения: \w и кириллица

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Mr. T
Сообщения: 84
Зарегистрирован: 2011.11.28, 14:38

Регулярные выражения: \w и кириллица

Сообщение Mr. T »

Добрый вечер,
подскажите, пожалуйста, как подружить \w с кириллицей в Yii?
Аватара пользователя
komusito
Сообщения: 14
Зарегистрирован: 2011.12.03, 19:46

Re: Регулярные выражения: \w и кириллица

Сообщение komusito »

что это за вопрос такой ? Уточни что ты хочешь.

Я так думаю что упомянутая выше карляка \w - это :
\w Соответствует любому буквенному символу, цифровому и знаку подчеркивания. Эквивалентно [[:word:]]

источник http://ru.wikipedia.org/wiki/%D0%A0%D0% ... 0%B8%D1%8F

И что собственно не получается ?

Такое предположение что ты работаешь с кодировкой Windows-1251 (синоним CP1251). Попробуй UTF-8. А возможно просто банально ошибся в регулярке.
Mr. T
Сообщения: 84
Зарегистрирован: 2011.11.28, 14:38

Re: Регулярные выражения: \w и кириллица

Сообщение Mr. T »

У меня в модели есть следующее правило

Код: Выделить всё

array('username, comment', 'match', 'pattern' => '/^[\d\w\s]+$/', 'message' => '{attribute} может содержать только буквенно-числовые символы и знаки препинания.'), 
, для латиницы и чисел работает, для кириллицы - нет...
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Регулярные выражения: \w и кириллица

Сообщение samdark »

Связано с тем, что \w в юникоде уже не то, что в ANSI. Сейчас найду тему. На этом же форуме обсуждали…
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Регулярные выражения: \w и кириллица

Сообщение rak »

а ещё во многих случаях проще установить нужную локаль, тогда и \w работать будет и это будет работать намного быстрее
Аватара пользователя
Kuklovod
Сообщения: 211
Зарегистрирован: 2011.11.22, 08:15

Re: Регулярные выражения: \w и кириллица

Сообщение Kuklovod »

Mr. T писал(а):Добрый вечер,
подскажите, пожалуйста, как подружить \w с кириллицей в Yii?
Может вам в конец нужно поставить u.
Например: '/^[А-Яа-я ]{1,255}$/u'.
u означает что проверятся будут не коды симолов, а сами символы.
Mr. T
Сообщения: 84
Зарегистрирован: 2011.11.28, 14:38

Re: Регулярные выражения: \w и кириллица

Сообщение Mr. T »

Sam Dark, спасибо за ссылку, но паттерн

Код: Выделить всё

~^(\p{L}|\p{Zs})+$~u
что-то не помог пока...

Есть еще один вопрос. Почему может не работать ссылка вида http://localhost/group/1/Администраторы/, в конфиге следующее правило

Код: Выделить всё

'<_c:group>/<id:\d+>/<groupname:\w+>' => '<_c>/view',
, при попытке открыть указанную ссылку, отображается следующее сообщение
Системе не удалось найти запрашиваемое действие "1".
. Заводить в базе данных поле, в котором хранить транслитерированное название, желания нет, как решить такую проблему?
Mr. T
Сообщения: 84
Зарегистрирован: 2011.11.28, 14:38

Re: Регулярные выражения: \w и кириллица

Сообщение Mr. T »

Почему паттерн

Код: Выделить всё

~^(\p{L}|\p{Zs})+$~u
может не работать? Ввожу имя на кириллице, но все равно не проходит...
maxtor
Сообщения: 78
Зарегистрирован: 2011.12.06, 11:04

Re: Регулярные выражения: \w и кириллица

Сообщение maxtor »

должен еще сказать, что \w не включает в себя символ ё. Её нужно дополнительно в правило вносить.
Mr. T
Сообщения: 84
Зарегистрирован: 2011.11.28, 14:38

Re: Регулярные выражения: \w и кириллица

Сообщение Mr. T »

"ё" меня пока меньше всего волнует, у меня остальные символы кириллицы не проходят...
reggg999
Сообщения: 2
Зарегистрирован: 2014.08.15, 13:30

Re: Регулярные выражения: \w и кириллица

Сообщение reggg999 »

Вот рабочий вариант /^[A-Za-zА-Яа-я0-9ё\s,]+$/u
BegemotUral
Сообщения: 1
Зарегистрирован: 2017.05.14, 08:25

Re: Регулярные выражения: \w и кириллица

Сообщение BegemotUral »

Товарищи, помогите с регуляркой. Как вот это дело подружить еще и с кириллицей?

Код: Выделить всё

var initialLetters = elementText.match(settings.middlename ? /\b(\w)/g : /^\w|\b\w(?=\S+$)/g);
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Регулярные выражения: \w и кириллица

Сообщение samdark »

Можно попробовать так:

Код: Выделить всё

var initialLetters = elementText.match(settings.middlename ? /\b([\w\u0430-\u044f])/g : /^[\w\u0430-\u044f]|\b[\w\u0430-\u044f](?=\S+$)/g);
Ответить