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

ange bildbeskrivning här

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

ange bildbeskrivning här

Bildkredit : - https://regex101.com/



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow