2011-11-25 13 views
9

/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}/Spiegando componente regex la password per componente (javascript)

Questa RegEx si suppone per convalidare una password, che dovrebbe contenere almeno una cifra, sia minuscole e caratteri maiuscoli. Qualcuno può spiegare questo RegEx da componenti più piccoli?

+4

porre domande circa le espressioni regolari, non si tratta di un'espressione regolare al tuo avvenire. –

+2

@LightnessRacesinOrbit è giusto, è solo un esempio. Come la maggior parte degli esempi, si presume che la conoscenza sia applicabile ad altri scenari. –

risposta

11
/(?=.\d)(?=.[a-z])(?=.*[A-Z]).{6,8}/ 

Questa espressione regolare è generalmente utilizzato per convalidare la password, vale a dire

password deve contenere 1 UpperCase, 1 LowerCase e 1 numeric e no special characters.

(?=.*\d) //at least 1 numeric charater. 

(?=.*[a-z]) //atleast 1 lowercase. 

(?=.*[A-Z]) //atleast 1 uppercase. 

.{6,8} //string is of 6 to 8 length. 

Spero che questo aiuti.

8

(?=.*\d) assicura la stringa ha una cifra in esso.

(?=.*[a-z]) assicura la stringa ha una lettera minuscola ASCII in esso.

(?=.*[A-Z]) assicura la stringa ha una lettera maiuscola ASCII in esso.

.{6,8} corrisponde a una stringa di almeno 6 e atmost 8 caratteri.

Dal momento che le ancore sono mancanti, la tua regex sarebbe partita qualsiasi stringa che ha come substring una stringa che soddisfa tutti i suddetti 4 condizioni.

+1

(e ovviamente, di nuovo, sono solo lettere e cifre ASCII. Inoltre, anche senza ancore, le stringhe che sono più lunghe di 8 caratteri saranno anche (parzialmente) corrispondenti ... –

+0

@Tim: corretto ... – codaddict

+1

+1 ed eliminato mio, perché hai digitato più velocemente. – stema

6

(?=..) significa: lasciare che la stringa successiva alla posizione corrente contenga ...

(?=.*\d) # Somewhere, at least one digit should appear 
(?=.*[a-z]) #   and at least a lowercase letter 
(?=.*[A-Z]) #   and at least an uppercase letter 
.{6,8}  #   must consist of 6-8 characters 

Nel modello mancano i marcatori per l'inizio e la fine di una stringa. Aggiungere ^ e $:

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,8}$/ 
2

L'espressione regolare è ambigua. Non dovresti usare la combinazione di caratteri ". *". Il punto indica qualsiasi carattere e l'asterisco di molte 0 o più occorrenze, che è probabilmente l'intera stringa.

3

Guardate diverse parti,

(?=.*\d) password deve essere di almeno 6 caratteri, e un massimo di 8 lettere lunghe ..

^(?=.*\d) contiene un numero,

(?=.*[a-z]) un piccolo alfabeto e

(?=.*[A-Z]) una lettera maiuscola ..

È possibile utilizzare come questo

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{lower_limit, upper_limit}$ 

per almeno una lettera minuscola, una lettera maiuscola, e un numero di tutte le restrizioni di lunghezza (inferiore, superiore)

3
?= is look ahead for the following feature within brackets() 
then (?=.*\d) 0 or more of any character that is a decimal 0-9 
then (?=.*[a-z]) after that look ahead for 0 or more a-z characters 
then (?=.*[A-Z]) after that look ahead for 0 or more A-Z uppercase characters 
.{6,8}/ and then must be 6-8 character long 

senza l'inizio^o fine $ questo corrisponderà a qualsiasi stringa di 6-8 caratteri che corrisponde alle regole precedenti.

se si cambia la * a + allora sarà hanno 1 o più caratteri

Problemi correlati