Шаблон иногда совпадает, а иногда нет - PullRequest
0 голосов
/ 14 сентября 2018

Я реализовал шаблон в угловых 5 со следующим кодом в файле .ts для проверки пароля. Предполагается, что это необходимо - поддерживать не менее восьми символов, как минимум одну заглавную букву, одну строчную букву, одну цифру и один специальный символ. См .: Regex для пароля должно содержать не менее восьми символов, как минимум одно число, а также строчные и прописные буквы и специальные символы

wcodePattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z0-9\d$@$-_!%*?&]{8,20}"; 

Понятно, когда я ввел строку в текстовое поле пароля, например, Niladri1! работает, однако, когда я ввел строку типа Nopasss123!!, он показывает User name not valid..

Ниже приведен код для угловых 5 html:

<div *ngIf="wcode.errors?.pattern">User name not valid.</div> 

Я также проверил следующее, и он принимает строку как Noladris, которая считается недействительной.

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@-_!])[A-Za-z0-9\d@-_!]{8,20}$

Что-нибудь, что я пропустил?

1 Ответ

0 голосов
/ 14 сентября 2018

Вам нужно использовать

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

Или, поскольку вы используете его внутри конструктора RegExp, здесь есть версия для использования:

wcodePattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$_!%*?&-]{8,20}$'

Примечание:

  • Вы должны поставить - в начале / конце класса символов, чтобы он соответствовал буквенному дефису, или экранировать его внутри
  • Обратный слеш в строковом литерале должен быть удвоен, иначе ониопределить escape-последовательности, такие как \n, \t и т. д.
  • $ должны быть добавлены в конце шаблона, чтобы «привязать» соответствие (т. е. соответствовать концу строки, чтобы обеспечить максимальное значениеограничение символов).
  • [$@$] = [$@] - нет необходимости повторять символы в классе символов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...