Regular Expressions
Lösenordsvalideringsregex
Sök…
Ett lösenord som innehåller minst 1 versaler, 1 gemener, 1 siffra, 1 specialtecken och har en längd på minst 10
Eftersom tecknen / siffrorna kan vara var som helst i strängen kräver vi lookaheads. Lookaheads är av zero width
vilket innebär att de inte förbrukar någon sträng. Med enkla ord återställs positionen för att kontrollera till den ursprungliga positionen efter att varje villkor i lookahead är uppfyllt.
Antagande : - Att betrakta icke-ordtecken som special
^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$
Innan vi fortsätter med förklaringen, låt oss ta en titt på hur regex ^(?=.*[az])
fungerar ( längd beaktas inte här ) på sträng 1$d%aA
Bildkredit : - https://regex101.com/
Saker att märka
- Kontrollen påbörjas från början av strängen på grund av ankar tagg
^
. - Kontrollläget återställs till start efter att villkoret för lookahead är uppfyllt.
Regex-uppdelning
^ #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
Vi kan också använda den icke-giriga versionen av ovanstående regex
^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$
Ett lösenord som innehåller minst två versaler, 1 gemener, 2 siffror och har en längd av minst 10
Detta kan göras med lite modifiering i ovanstående regex
^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$
eller
^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*
Låt oss se hur en enkel regex ^(?=(?:.*?[AZ]){2})
fungerar på strängen abcAdefD
Bildkredit : - https://regex101.com/