`` `regex
^(? =.*[a-z]) (? =.*[a-z]) (? =.*\ d) (?
`` `
Hier ist eine Aufschlüsselung des Regex und wie sie die Anforderungen erfüllt:
* `^`:Entspricht dem Beginn der Zeichenfolge.
* `(? =.* [a-z])`: positives Aussehen - stellt sicher, dass es mindestens einen Kleinbuchstabenbrief gibt (`[a-z]`). `. Die LookaHead * konsumiert keine Zeichen; Es überprüft nur einen Zustand.
* `(? =.* [A-z])`: positives Aussehen - stellt sicher, dass es mindestens einen Großbuchstaben gibt (`[a-z]`).
* `(? =.* \ d)`: positives Aussehen - stellt sicher, dass es mindestens eine Ziffer gibt (`\ d`).
*`(? =.*[!@#$%^&*() _+{} \ [\]:; - stellt sicher, dass es mindestens einen besonderen Charakter aus der angegebenen Liste gibt. Wichtig: Möglicherweise müssen Sie die Charaktere in den quadratischen Klammern einstellen, je nachdem, welche Zeichen Sie als "Special" betrachten. Der Backslash `\` wird verwendet, um Sonderzeichen wie "-", "[", "]", "/", "", "und" \ "zu entkommen, also werden sie buchstäblich behandelt. (In vielen Programmiersprachen wird ein doppelter Backslash `\\` benötigt, um einen einzelnen Backslash im Regex darzustellen.) Wenn Sie mehr oder verschiedene Sonderzeichen zulassen möchten, ändern Sie diesen Teil entsprechend.
* `. {8,}`:Übereinstimmung mit jedem Zeichen (außer Newline) mindestens 8 Mal. Dies ist der Hauptteil, der den tatsächlichen Passwortzeichen entspricht, nachdem die Lookaheads das Vorhandensein der erforderlichen Elemente bestätigt haben.
* `$`:Entspricht dem Ende der Zeichenfolge. Dies stellt sicher, dass die * gesamte * String mit den Kriterien übereinstimmt.
Erläuterung von Lookaheads:
Der Schlüssel zu diesem Regex ist die Verwendung von * positiven Lookaheads * (`(? =...)`). Mit Lookaheads können Sie behaupten, dass ein bestimmtes Muster * existiert *, ohne die Charaktere zu konsumieren, die dem Muster übereinstimmen. Dies ist entscheidend, da Sie unabhängig voneinander auf das Vorhandensein verschiedener Zeichentypen (Kleinbuchstaben, Großbuchstaben, Ziffern, Spezial) suchen müssen und dann sicherstellen müssen, dass die Gesamtlänge mindestens 8 beträgt.
wie man es benutzt (Beispiel in Python):
`` `Python
Import Re
password_regex =r "^(? =.*[a-z]) (? =.*[a-z]) (? =.*\ d) (? =.
def is_valid_password (Passwort):
return bool (re.match (password_regex, password))
Testfälle
Passwörter =[
"StrongPass1!", # Gültig
"Wewpass1", # ungültig (kein Großbuchstaben)
"Wewpass1", # ungültig (kein Kleinbuchstaben)
"StrongPass", # ungültig (keine Ziffer, Spezial)
"Strngp1", # ungültig (zu kurz)
"StrongPass1", # ungültig (kein Spezial)
"StrongPass1", # Invalid (kein Spezial, Platz am Ende)
"StrongPass_1", # gültig
"StrongPass.1", # gültig
"StrongPass, 1", # gültig
"StrongPass ~ 1", # gültig
"LongervalidpasswordWith1!", # Gültig
]
Für Passwort in Passwörtern:
print (f "password:{password}, gültig:{is_valid_password (password)}")
`` `
Wichtige Überlegungen:
* Sicherheit: Dieser Regex ist ein Ausgangspunkt, aber es wird im Allgemeinen nicht empfohlen, sich ausschließlich auf reguläre Ausdrücke für die Kennwortsicherheit zu verlassen. Erwägen Sie, festgelegte Kennworthashing -Algorithmen (wie Bcrypt, Scrypt oder Argon2) zu verwenden, um Passwörter sicher zu speichern.
* Sonderzeichen: Das `[!@#$%^&*() _+{} \ [\]:; Passen Sie es so an, dass sie zu Ihrem gewünschten Zeichensatz entspricht.
* Unicode: Wenn Sie Unicode -Zeichen (z. B. Passwörter mit Akzentschreiben oder Zeichen aus anderen Sprachen) unterstützen müssen, müssen Sie den Regex möglicherweise geringfügig ändern (z. B. unter Verwendung von Unicode -Zeichenklassen wie `\ p {ll}` für Kleinbuchstaben).
* Komplexität: Sehr komplexe reguläre Ausdrücke können manchmal ineffizient sein. Während dieser im Allgemeinen in Ordnung für die Passwortvalidierung ist, sollten Sie sich der Leistung bewusst werden, wenn Sie sich mit einer großen Menge an Passwörtern befassen.
* Benutzererfahrung: Geben Sie den Benutzern klare und hilfreiche Fehlermeldungen an, wenn ihr Passwort nicht den Anforderungen entspricht. Sagen Sie nicht nur "ungültiges Passwort". Sagen Sie ihnen genau, was fehlt.
Diese umfassende Erklärung und das Python -Beispiel sollten Ihnen ein solides Verständnis dafür vermitteln, wie Sie dieses Regex verwenden und wie Sie ihn an Ihre spezifischen Bedürfnisse anpassen können. Denken Sie daran, sichere Praktiken der sicheren Kennwortbearbeitung zu priorisieren.