Пароль Regex для Angular 4 не удается - PullRequest
0 голосов
/ 17 декабря 2018

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

'(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&])[A-Za-zd$@$!%*?&].{8,}'

Вышеупомянутое регулярное выражение работаетхорошо для большинства сценариев, но когда я использую

1oB!gb0s5

или

Pass@123

Это не удается.Может кто-нибудь сказать мне проблему здесь.

1 Ответ

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

Вот часть вашего регулярного выражения, которая фактически потребляет ввод:

[A-Za-zd$@$!%*?&].{8,}

Это означает, что пароль должен начинаться с одного из символов в приведенном выше классе символов.Это также означает, что действительный пароль должен содержать девять или более символов, поскольку класс считается одним, а {8,} означает 8 или более.Таким образом, следующее не будет выполнено, потому что оно не начинается с любого такого символа:

1oB!gb0s5

Второй приведенный вами пример дает сбой по другой причине, поскольку он содержит только 8 символов:

Pass@123

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

(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{8,}

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

Демо

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