f_society
@f_society
по граблям новичка

Как запретить кирилицу textInput yii2?

хочу запретить кирилицу в форме регистрации для полей логин и пароль
погуглил нашел что то но не работает
['username', 'match', 'pattern' => '/^[^а-яА-Я] $/i'],
['password', 'match', 'pattern' => '/^[^а-яА-Я] $/i'],

даже латиница не работает при такой валидации

и еще в поле цена хочу применить (это другая форма)
number_format($adverts['price'],0,'',' ')
подскажите как это реализвать
дайте пример
  • Вопрос задан
  • 681 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Вы забыли добавить модификатор "u" для работы с кирилицей.
['username', 'match', 'pattern' => '/^[^а-яА-Я]+$/ui'],

И если Вы используйте "i", то сократить можно до такой записи
['username', 'match', 'pattern' => '/^[^а-яё]+$/i'],

Ну и если Вам не нужна кириллица, то зачем проверять именно на присутствие кириллицы, а не сразу проверять латиницу?
['username', 'match', 'pattern' => '/^[a-z]+$/i'],
И можно попробовать убрать ограничение на начало и окончание строки.
['username', 'match', 'pattern' => '/[a-z]+/i'],
Так же можно ещё сократить запись pattern-a.
// \w соответствует [a-zA-Z0-9_]
['username', 'match', 'pattern' => '/\w+/i'],

даже латиница не работает при такой валидации

Не работает потому, что Вы не используете метасимвол повторения(если я правильно назвал)
При таком шаблоне '/^[^а-яА-Я] $/i' Вы ищите только один символ, а чтобы найти от одного и больше надо использовать "+", вот так '/^[^а-яА-Я]+$/i'

P.S.
Для вывода пользовательского сообщения об ошибке можно передать дополнительный параметр в правило валидации

['username', 'match', 'pattern' => '/[a-z]+/i', 'message' => '{attribute} должен содержать только латиницу!'],


P.S.S.
Вот полезные ссылки:
1) Регулярные выражения для новичков.
2) yii\validators\Validator
3) Документация YII2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EnChikiben
@EnChikiben
а так ['username', 'match', 'pattern' => '/^[a-zA-Z]$/i'], ?

https://stackoverflow.com/questions/46448963/valid...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы