@sparco356

Как правильно составить регулярное выражение?

Доброго времени суток!
Стоит задача, написать правило при валидации формы регистрации запретить ввод в поле "Логина" 10-ти и более цифр подрят.
Добавляю правило:
['login', 'match', 'pattern' => '^[\d]{10}$', 'message' => 'Номер телефона не может быть логином'],
он ругается на все варианты ввода кроме 10-ти цифр подрят, а мне требуется наоборот, в регулярке совсем ничего не понимаю, помогите пожалуйста!.
Большое спасибо!
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
используйте параметр not валидатора match, например так:
[
    'login', 
    'match', 
    'pattern' => '^[\d]{10}$', 
    'not' => true,
    'message' => 'Номер телефона не может быть логином'
],
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
десять цифр не обязательно телефон, так же как и телефон не обязательно 10 цифр, бесполезное правило, скорее надо так:
['login', 'compare', 'compareAttribute' => 'phone', 'message' => 'Номер телефона и логин не должны совпадать'],

ведь проблема не в том что логин похож на чей-то номер телефона, а в том, что это телефон конкретного этого же юзера. Так что с его конкретным телефоном сверять и надо.
Но мое мнение - меньше запретов, больше предупреждений. Раздражает когда сервис за меня решает какой логин мне использовать или пароль. Тем более если ценность профайла на этом сайте равна 0 (речь не о ценности или качестве сайта, речь именно о учетной записи и последствиях ее потери).
Ответ написан
Комментировать
@masterfreelance
программист со стажем
А что мешает правило записать так ^(?!\d{10,}).+
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы