Javascript Regex для надежного пароля с определенным порядком символов - PullRequest
0 голосов
/ 15 декабря 2018

Я видел ответы для проверки надежного пароля, но у меня есть дополнительное требование для порядка, в котором появляются символы.

Пароль должен содержать как минимум:

  1. Один верхнийрегистр букв.
  2. Одна строчная буква.
  3. Одно число.
  4. Один специальный символ.

Порядок:

  • Должен начинаться с прописных и строчных букв.
  • Затем следуют цифры и / или буквы алфавита.
  • В конце должен быть специальный символ.

Например,

  • Xyz1325 @ действителен.
  • aBcd123xYz # также действителен.
  • @ Xyz1234 является недействительным.
  • 1234Xyz @ недействителен.
  • Xyz @ недействителен.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Введение определенного порядка символов в пароле делает его относительно более предсказуемым, а значит, теряет его силу, и я предлагаю вам обойтись без этого ограничения.Тем не менее, вы можете использовать это регулярное выражение, которое будет соответствовать вашим потребностям,

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$

Объяснение:

  • ^ -> Начало строки
  • (?=.*[a-z]) -> Гарантирует, что пароль содержит хотя бы одну строчную букву.
  • (?=.*[A-Z]) -> Гарантирует, что пароль имеет хотя бы одну заглавную букву.
  • (?=.*\d) -> Гарантирует, что пароль содержит хотя бы одну цифру.
  • (?=.*[~!@#$%^&*]) -> Гарантирует, что пароль содержит хотя бы один специальный символ из этого набора.Вы можете поместить больше символов внутрь, которые вы хотите считать особенными.

Теперь придет часть для обеспечения порядка.Как вы сказали, он должен начинаться с алфавита, поэтому нам нужен первый символ:

[a-zA-Z]

Тогда после него может быть алфавит или цифры, поэтому вы можете использовать

[a-zA-Z\d]*

Инаконец, вам нужны специальные символы, и с помощью этого выражения «В конце концов, должен быть специальный символ.» Я предполагаю, что вы не хотите ограничивать его одним единственным специальным символом, следовательно, в концеregex это должно быть,

[~!@#$%^&*?<>]*

, которое может соответствовать одному или нескольким специальным символам.Если вы действительно имели в виду только один специальный символ, просто сделайте его [~!@#$%^&*?<>]

И, наконец, завершите его $, чтобы прекратить сопоставлять строку.

Live Demo

Надеюсь, это работает для вас.Или же, дайте мне знать для любых других запросов.

Редактировать

Бонус: Если вы хотите проверить длинутакже вы можете сделать это, используя следующее:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])(?=.{6,18}$)[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$

Дополнительный (?=.{6,18}$) должен гарантировать, что ваше регулярное выражение имеет длину от 6 до 18.

@ Pushpesh, пожалуйста, исправьте, если неправильно.

0 голосов
/ 15 декабря 2018

Регулярное выражение, которое, я полагаю, вы ищете, это: https://regex101.com/r/nO2DxE/2

Объяснение: Эти группы (?=.*[A-Z].*) (?=.*[0-9].*) (?=.*[a-z].*) убедитесь, что ваша строка содержит хотя бы одну заглавную букву, одну строчную буквуи одна цифра.Остальная часть регулярного выражения проверяет, что описанный вами порядок соблюдается.

В целом регулярное выражение: (?=.*[A-Z].*)(?=.*[0-9].*)(?=.*[a-z].*)^[a-zA-z][a-zA-Z0-9]*[@!#+-]$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...