^(? =.*[a-z]) (? =.*[a-z]) (? =.*\ d) (? =.*[!@#$%^&*() _+{} \ [\]:; <>,.? ~ \\/-]). {8,} $
`` `
Ecco una rottura del regex e come soddisfa i requisiti:
* `^`:Corrisponde all'inizio della stringa.
* `(? =.* [A-Z])`: Positive Lookahead - Garantisce che esista almeno una lettera minuscola (`[A-Z]`). `.*` Abbina qualsiasi carattere (tranne Newline) zero o più volte, quindi essenzialmente dice "Da qualche parte nella stringa, deve esserci una lettera minuscola". Il lookahead * non consuma * nessun personaggio; controlla solo una condizione.
* `(? =.* [A-Z])`: Positive Lookahead - Garantisce che esista almeno una lettera maiuscola (`[A-Z]`).
* `(? =.* \ d)`: Lookahead positivo - Garantisce che ci sia almeno una cifra (`\ d`).
*`(? =.*[!@#$%^&*() _+{} \ [\]:; <> ,.? ~ \\/-])`: Lookahead positivo - Garantisce che ci sia almeno un carattere speciale dall'elenco fornito. Importante: Potrebbe essere necessario regolare i personaggi all'interno delle staffe quadrate a seconda dei personaggi che consideri "speciali". La backslash `\` è usata per sfuggire a personaggi speciali come `-`,` [`,`] `,`/`,` ``, e `\`, quindi vengono trattati letteralmente. (È necessaria una doppia retroscena `\\` in molti linguaggi di programmazione 'per rappresentare una singola retroscena nel regex.) Se si desidera consentire caratteri speciali più o diversi, modificare questa parte di conseguenza.
* `. {8,}`:corrisponde a qualsiasi carattere (tranne Newline) almeno 8 volte. Questa è la parte principale che corrisponde ai caratteri della password effettivi, dopo che i lookahead hanno confermato la presenza degli elementi richiesti.
* `$`:Corrisponde alla fine della stringa. Questo garantisce che l'intera stringa corrisponda ai criteri.
Spiegazione dei lookaheads:
La chiave di questo regex è l'uso di * lookahead positivi * (`(? =...)`). I lookahead ti consentono di affermare che un determinato modello esiste * senza consumare effettivamente * i personaggi che corrispondono al modello. Questo è cruciale perché è necessario verificare la presenza di diversi tipi di carattere (minuscolo, maiuscolo, cifra, speciale) in modo indipendente e quindi assicurarsi che la lunghezza totale sia di almeno 8.
come usarlo (esempio in python):
`` `Python
importazione re
password_regex =r "^(? =.*[a-z]) (? =.*[a-z]) (? =.*\ d) (? =.*[!#$%^&*() _+{} \ [\]:; <> ,.? ~ \\/-]). {8,} $"
def is_valid_password (password):
return bool (re.match (password_regex, password))
password =[
"Strongpass1!", Valido
"depeakpass1", # non valido (nessuna maiuscola)
"Depeakpass1", # non valido (nessuna minuscolo)
"Strongpass", # non valido (nessuna cifra, speciale)
"Strngp1", # non valido (troppo corto)
"Strongpass1", # non valido (nessun speciale)
"Strongpass1", # non valido (nessun spazio speciale, alla fine)
"Strongpass_1", # valido
"Strongpass.1", # valido
"Strongpass, 1", # valido
"Strongpass ~ 1", # valido
"Longervalidpasswordwith1!", # Valido
"
per password nelle password:
print (f "password:{password}, valido:{is_valid_password (password)}")
`` `
Considerazioni importanti:
* Sicurezza: Questo Regex è un punto di partenza, ma non è generalmente consigliato fare affidamento su espressioni regolari per la sicurezza delle password. Prendi in considerazione l'utilizzo di algoritmi di hashing di password stabiliti (come BCrypt, Scrypt o Argon2) per archiviare le password in modo sicuro.
* Personaggi speciali: La porzione `[!@#$%^&*() _+{} \ [\]:; <> ,.? ~ \\/-]` la porzione definisce quello che consideri un personaggio "speciale". Regola per abbinare il set di caratteri desiderato.
* Unicode: Se è necessario supportare i caratteri Unicode (ad esempio, password con lettere o caratteri accentati di altre lingue), potrebbe essere necessario modificare leggermente il regex (ad esempio, usando classi di caratteri Unicode come `\ p {ll}` per lettere minuscole).
* Complessità: Le espressioni regolari molto complesse a volte possono essere inefficienti. Mentre questo va bene per la convalida delle password, sii consapevole delle prestazioni se hai a che fare con un enorme volume di password.
* Esperienza utente: Fornire messaggi di errore chiari e utili agli utenti quando la loro password non soddisfa i requisiti. Non dire solo "password non valida"; Di 'loro esattamente cosa manca.
Questa spiegazione completa e l'esempio di Python dovrebbero darti una solida comprensione di come usare questo regex e come adattarlo alle tue esigenze specifiche. Ricorda di dare la priorità alle pratiche di gestione delle password sicure.
Domanda © www.354353.com