Требование политики паролей регулярное выражение - PullRequest
0 голосов
/ 20 февраля 2020

Мне нужно регулярное выражение для выполнения этого требования политики паролей. Минимум восемь (8) символов. Как минимум одно число (0-9). Любые три из следующих: Нижний регистр Прописный номер Специальный символ (! "# $% & '() * +, -. /:; <=>? @ [\] ^ _ `{|} ~)

сейчас я использую это регулярное выражение Минимум восемь (8) символов

/^(?=.*\d)[ !#$%&()*+,.\/:;<=>?@[\]^`{|}~\w-]{8,}$/

Это регулярное выражение не работает должным образом, оно принимает ввод testtest1 в качестве правильного совпадения. Следует принять test@test1, Testtest12 в качестве правильного ввода

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Шаблон будет соответствовать testtest1, поскольку вы только указываете требуемый di git, а следующий класс символов [ !#$%&()*+,.\/:;<=>?@[\]^ {|} ~ \ w -] {8,} `будет повторять сопоставление как минимум 8 раз с любым из перечисленные.


Если вы хотите установить либо заглавные буквы AZ, либо специальные символы, вы можете использовать другой положительный прогноз с чередованием

^(?=.*\d)(?=.*(?:[A-Z]|[!#$%&()*+,.\/:;<=>?@[\]^`{|}~-]))[!#$%&()*+,.\/:;<=>?@[\]^`{|}~\w-]{8,}$

Regex demo

Заметьте , что я пропустил сопоставление пробелов, вы можете использовать пробел для класса символов, если вы хотите сопоставить его (Не уверен, если вы позволил бы пробелы в пароле)

0 голосов
/ 20 февраля 2020

Вам нужно немного изменить свою часть предпросмотра.

^(?=.{8,})(?=.*[0-9].*)(.*[\!"#$%&'\(\)\*+,\-.\/:;<=>?@\[\\\]^_`{|}~].*){3,}

(?=.{8,}) = длина не менее восьми символов (положительный взгляд)

(?=.*[0-9].*) = по одному числу (положительно) lookahead)

(.*[\!"#$%&'\(\)\*+,\-.\/:;<=>?@\[\\\]^_ {|} ~]. *) {3,} `любой символ в вашем списке где-то не менее трех раз

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