Regex 2 цифры или специальные символы - PullRequest
0 голосов
/ 21 февраля 2019

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

Мин. 12 символов, Требуется заглавная буква, Требуется строчная буква, Требуется 2 числовых значения ИЛИ 2 специальных символа.

НаВ тот момент, когда у меня есть следующее:

~^(?=\P{Ll}*\p{Ll})(?=\P{Lu}*\p{Lu})(?=.*[!@#$%^&*()]|\D*\d).{12,}~u

Который использует 1 числовой ИЛИ 1 специальный символ, а не 2. Я пытался добавить {2} к условию ИЛИ, однако для этого требуется комбинация из двух, чтоневерно.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 21 февраля 2019

Вам следует заменить (?=.*[!@#$%^&*()]|\D*\d) lookahead на (?:(?=(?:[^!@#$%^&*()]*[!@#$%^&*()]){2})|(?=(?:\D*\d){2})).Регулярное выражение будет выглядеть следующим образом:

'~^(?=\P{Ll}*\p{Ll})(?=\P{Lu}*\p{Lu})(?:(?=(?:[^!@#$%^&*()]*[!@#$%^&*()]){2})|(?=(?:\D*\d){2})).{12,}$~u'

См. Демонстрационный пример regex .

. Предварительный просмотр соответствует местоположению, за которым сразу следует

  • (?:[^!@#$%^&*()]*[!@#$%^&*()]){2} - два повторения любых 0+ символов, кроме !@#$%^&*() символов, сопровождаемых символом из списка !@#$%^&*()
  • | - или
  • (?=(?:\D*\d){2} - два повторениялюбых 0+ нецифровых символов, за которыми следует цифра
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...