Suche…


Ein Passwort, das mindestens 1 Großbuchstabe, 1 Kleinbuchstabe, 1 Ziffer, 1 Sonderzeichen enthält und eine Länge von mindestens 10 hat

Da sich die Zeichen / Ziffern an einer beliebigen Stelle in der Zeichenfolge befinden können, benötigen wir Lookaheads. Lookaheads haben zero width von zero width was bedeutet, dass sie keine Zeichenfolge verbrauchen. In einfachen Worten wird die Position der Überprüfung auf die ursprüngliche Position zurückgesetzt, nachdem jede Voraussagebedingung erfüllt ist.

Annahme : - Nicht-Wort-Zeichen werden als besonders angesehen

^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$

Bevor wir zur Erläuterung gehen, werfen wir einen Blick auf die Funktionsweise des Regex ^(?=.*[az]) ( Länge wird hier nicht berücksichtigt ) in Zeichenfolge 1$d%aA

Geben Sie hier die Bildbeschreibung ein

Bildnachweis : - https://regex101.com/

Dinge zu beachten

  • Die Prüfung wird aufgrund des Ankertags ^ vom Anfang des Strings gestartet.
  • Die Position der Überprüfung wird auf den Start zurückgesetzt, nachdem die Bedingung des Lookahead erfüllt ist.

Regex-Aufschlüsselung

^ #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

Wir können auch die nicht-gierige Version des obigen Regex verwenden

^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$

Ein Passwort mit mindestens 2 Großbuchstaben, 1 Kleinbuchstaben und 2 Ziffern und einer Länge von mindestens 10

Dies kann mit ein paar Modifikationen in der obigen Regex vorgenommen werden

 ^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$

oder

 ^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*

Mal sehen, wie ein einfacher regex ^(?=(?:.*?[AZ]){2}) auf dem String abcAdefD

Geben Sie hier die Bildbeschreibung ein

Bildnachweis : - https://regex101.com/



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow