Поиск…


Пароль, содержащий как минимум 1 прописную букву, 1 строчную букву, 1 цифру, 1 специальный символ и длину не менее 10

Поскольку символы / цифры могут быть в любом месте внутри строки, нам нужны образы. Lookaheads имеют zero width означает, что они не потребляют ни одной строки. В простых словах положение проверки сбрасывается до исходного положения после выполнения каждого условия просмотра.

Предположение : - Рассмотрение несловных символов как специальных

^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$

Прежде чем приступать к объяснению, давайте посмотрим, как работает регулярное выражение ^(?=.*[az]) ( длина здесь не рассматривается ) в строке 1$d%aA

введите описание изображения здесь

Кредит на изображение : - https://regex101.com/

Что нужно заметить

  • Проверка начинается с начала строки из-за метки привязки ^ .
  • Позиция проверки сбрасывается до начала после выполнения условия просмотра.

Распределение регулярных выражений

^ #Starting of string
 (?=.{10,}$) #Check there is at least 10 characters in the string. 
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[a-z]) #Check if there is at least one lowercase in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[A-Z]) #Check if there is at least one uppercase in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*[0-9]) #Check if there is at least one digit in string.
             #As this is lookahead the position of checking will reset to starting again
 (?=.*\W) #Check if there is at least one special character in string.
          #As this is lookahead the position of checking will reset to starting again
.*$ #Capture the entire string if all the condition of lookahead is met. This is not required if only validation is needed

Мы также можем использовать нежелательную версию вышеупомянутого регулярного выражения

^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$

Пароль, содержащий как минимум 2 прописных, 1 строчный, 2 цифры и длиной не менее 10

Это может быть сделано с некоторой модификацией в вышеупомянутом регулярном выражении

 ^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$

или же

 ^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*

Посмотрим, как простое регулярное выражение ^(?=(?:.*?[AZ]){2}) работает на строке abcAdefD

введите описание изображения здесь

Кредит на изображение : - https://regex101.com/



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow