Regexp. Валидация поля с паролем

Рейтинг: 2Ответов: 2Опубликовано: 25.04.2015

Есть поле с паролем. Нужно провалидировать со следующим условием:

минимальная длина пароля 8 символов,
максимальная длина 20 символов,
поле должно содержать латиницу нижний и верхний регистр, не менее 4 букв + спецсимволы.
Пробовал сделать следующим способом - не получилось:

(?=.*\d)((?=.*[a-z])|(?=.*[A-Z]){4,}).{8,20}

Ответы

▲ 5Принят
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=(.*[a-zA-Z]){4}).{8,20}$
▲ 1

Самый простой способ - сделать по проверке на каждое условие, то есть берёте строку с паролем, и

  • проверяете, что она не меньше минимальной длины
  • проверяете, что она не больше максимальной длины
  • проверяете, соответствует ли регулярному выражению "что угодно, где есть хоть один спецсимвол"
  • проверяете, соответствует ли регулярному выражению "что угодно, где есть (любая буква в нижнем регистре И любая буква в верхнем регистре)x4 штуки
  • и т.д.

Потом применяете логическое И ко всем проверкам и узнаете, сошлись ли все условия, или нет.