Regular Expressions
Регулярное повторение пароля
Поиск…
Пароль, содержащий как минимум 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/