Помогите составить валидацию пароля

Тема в разделе "Регулярные выражения", создана пользователем funnywheel, 14 фев 2016.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    251
    Симпатии:
    203
    Регвыр должен соответствовать условиям:
    1. длина пароля >= 8 символов
    2. разрешенные символы - русские и английские буквы в верхнем и нижнем регистрах, цифры, точка, запятая, дефис, нижнее подчеркивание
    3. в пароле должны быть минимум 1 цифра 1 заглавная и 1 строчная буквы
    Можно-ли составить одну регулярку под эти условия?

    PS: если считаете, что это не самые удачные/безопасные условия - посоветуйте условия проверки. Желательно сразу с регэкспом =)
     
  2. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    229
    Симпатии:
    305
    Код:
    ^(?:[a-z]()|[A-Z]()|\d()|[-,._]){8,}\1\2\3$
    
    https://regex101.com/r/pK9cP9/1
    А под какой диалект регулярных выражений это всё нужно?
    В Python, Ruby, Perl, PHP, .NET есть особенность поведения обратных ссылок.
    В выражении можно использовать пустые сохраняющие группы после каждого обязательного слова.
    Так как попытка сопоставления с обратной ссылкой будет терпеть неудачу, если соответствующая ей сохраняющая группа еще не участвовала в сопоставлении.
    В JavaScript свои правила и этот трюк не работает.
    Тогда можно сделать серию опережающих проверок.
    Код:
    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[-,._a-zA-Z\d]{8,}$
    
    https://regex101.com/r/pK9cP9/2
     
    Последнее редактирование: 14 фев 2016
    funnywheel нравится это.
  3. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    251
    Симпатии:
    203
    да, забыл уточнить, PHP

    увы, половина информации мне непонятна в посте =) я думаю, если-бы понимал его, не стал-бы задавать (скорее всего) глупые вопросы =)
    спасибо за регулярку, буду сейчас тестить.

    UPD: да, вроде-бы все ок, спасибо большое. правда там русские буквы забыли указать, но с этим я справился =)
     
    Последнее редактирование: 14 фев 2016
Статус темы:
Закрыта.