Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> password >> .

Password Min8 Chars Inc1 Upper e 1 Accesso Caso 1 Numerico Speciale Char Come scrivere questo?

`` `regex

^(? =.*[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))

Casi di prova

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