2015-12-01 4 views
0

Я хочу проверить строку со следующими валидаций:Регулярное выражение, необходимое для выработки политики паролей

  • 6 до 20 символов
  • Один нижний регистр символов
  • Один символ верхнего регистра
  • Один специальный знак
  • Один цифровой символ
  • 3 или более трех последовательных букв не допускается
  • 3 или больше, чем 3 последовательных Числовые не допускается

Я создал выражение

var regex=/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/; 

, которая удовлетворяет только следующие валидации:

  • 6 до 20 символов
  • One нижний регистр
  • 1 верхний регистр
  • Один цифровой символ

Нужна помощь, чтобы создать выражение для следующих 3 валидаций:

  • один специальный символ
  • 3 или больше, чем 3 последовательных букв не допускается
  • 3 или больше 3 последовательных числа не разрешены
+0

Это больше слово советов, но только для вашей информации, имея прыгать через все эти обручи, чтобы сделать пароль и ограничение только вариантов ваших конечных пользователей служит ухудшит пользовательский опыт - единственный ограничивающий фактор защиты паролем от программ перебора - это длина пароля, ** не ** сложность паролей. –

ответ

0
^(?=.*\d)(?=.*[^a-zA-Z0-9\s])(?=.*[a-z])(?=.*[A-Z])(?!.*([a-zA-Z0-9])\1\1).{6,20}$ 

Вы можете добавить lookahead для того же. См. Демонстрационную версию.

https://regex101.com/r/hE4jH0/15

+0

why downvoted ?????? //// – vks

+1

Потому что это не полезно? Потому что принцип не показан? Потому что это просто случайный regexp-mongering для проката? Потому что существуют десятки вопросов регулярного повторения паролей, которые все сводятся к одному и тому же? Поскольку регулярные выражения не являются лучшим способом проверки пароля? Потому что мы не хотим быть соучастниками такого рода безумства паролей? –

Смежные вопросы