Regular Expressions
Regex di convalida della password
Ricerca…
Una password contenente almeno 1 lettere maiuscole, 1 lettere minuscole, 1 cifra, 1 carattere speciale e una lunghezza di almeno 10 caratteri
Poiché i caratteri / le cifre possono essere ovunque all'interno della stringa, abbiamo bisogno di lookheads. Lookaheads sono di zero width
senso che non consumano alcuna stringa. In parole semplici, la posizione di controllo si ripristina nella posizione originale dopo che ciascuna condizione di lookahead è soddisfatta.
Assunzione : - Considerando i caratteri non parole come speciali
^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$
Prima di procedere alla spiegazione, diamo un'occhiata a come funziona la regex ^(?=.*[az])
(la lunghezza non è considerata qui ) sulla stringa 1$d%aA
Credito immagine : https://regex101.com/
Cose da notare
- Il controllo viene avviato dall'inizio della stringa a causa del tag di ancoraggio
^
. - La posizione di controllo viene reimpostata all'avvio dopo che è stata soddisfatta la condizione di lookahead.
Regex Breakdown
^ #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
Possiamo anche usare la versione non golosa della regex di cui sopra
^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$
Una password contenente almeno 2 lettere maiuscole, 1 lettere minuscole, 2 cifre e una lunghezza di almeno 10
Questo può essere fatto con un po 'di modifica nella regex di cui sopra
^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$
o
^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*
Vediamo come una semplice regex ^(?=(?:.*?[AZ]){2})
funziona su string abcAdefD
Credito immagine : https://regex101.com/