Die folgenden 4 Regex-Muster können Ihnen helfen, fast jede Passwortvalidierung zu schreiben
Muster 1:
Passwort muss eine Ziffer von 1 bis 9, einen Kleinbuchstaben, einen Großbuchstaben, ein Sonderzeichen, keinen Leerzeichen enthalten und 8-16 Zeichen lang sein.
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$/
Erklärung:
-
(?=.*[0-9])
bedeutet, dass das Passwort eine einzelne Ziffer von 1 bis 9 enthalten muss.
-
(?=.*[a-z])
bedeutet, dass das Passwort einen Kleinbuchstaben enthalten muss.
-
(?=.*[A-Z])
bedeutet, dass das Passwort einen Großbuchstaben enthalten muss.
-
(?=.*\W)
bedeutet, dass das Passwort ein Sonderzeichen enthalten muss.
-
.{8,16}
bedeutet, dass das Passwort 8-16 Zeichen lang sein muss. Wir müssen dies am Ende des Regex verwenden, kurz vor dem $
-Symbol.
Was bedeuten ^
und $
:
^
zeigt den Anfang des Strings an. $
zeigt das Ende des Strings an.
Wenn wir diese ^
& $
nicht verwenden, kann der Regex die maximale Länge des Passworts nicht bestimmen. Im obigen Beispiel haben wir eine Bedingung, dass das Passwort nicht länger als 16 Zeichen sein darf, um diese Bedingung zu erfüllen, haben wir diese ^
& $
verwendet
Maximale Längenbeschränkung entfernen:
- Anstelle von
.{8,16}
könnten wir .{8,}
verwendet haben, was bedeuten würde, dass das Passwort mindestens 8 Zeichen lang sein muss. Es gibt also keine Bedingung für die maximale Länge des Passworts.
Akzeptiere keine Zahl(Ziffer):
- Statt
(?=.*[0-9])
zu verwenden, wenn wir (?!.*[0-9])
verwenden würden, würde das bedeuten, dass das Passwort keine Ziffer von 1-9 enthalten darf (Der Unterschied zum (?=.*[0-9])
liegt in der Verwendung von !
anstelle von =
)
Akzeptiere kein Sonderzeichen:
- Statt
(?=.*\W)
zu verwenden, wenn wir (?!.*\W)
verwenden würden, würde das bedeuten, dass das Passwort keine Sonderzeichen enthalten darf (Der Unterschied zum (?=.*\W)
liegt in der Verwendung von !
anstelle von =
)
Alternative Syntax für Zahl(Ziffer):
- Anstelle von
(?=.*[0-9])
könnten wir (?=.*\d)
verwendet haben. (?=.*\d)
bedeutet auch, dass das Passwort eine einzelne Ziffer von 1 bis 9 enthalten muss.
Muster 2:
Passwort muss eine Ziffer von 1 bis 9, einen Kleinbuchstaben, einen Großbuchstaben, einen Unterstrich, aber kein anderes Sonderzeichen, kein Leerzeichen und 8-16 Zeichen lang sein.
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.*\W)(?!.* ).{8,16}$/
Unterschied zum Muster 1
-
Hier haben wir (?=.*_)
verwendet, was im Muster 1
nicht enthalten war.
-
(?=.*_)(?!.*\W)
bedeutet, dass das Passwort einen Unterstrich enthalten muss, aber kein anderes Sonderzeichen enthalten darf.
Pattern 3:
Passwort muss eine Ziffer von 1 bis 9, einen Kleinbuchstaben, einen Großbuchstaben, einen Unterstrich, kein Leerzeichen enthalten und 8-16 Zeichen lang sein. Die Verwendung eines anderen Sonderzeichens außer Unterstrich ist optional.
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/
Unterschied zum Muster 2
-
Hier haben wir (?!.*\W)
nicht verwendet, was im Muster 2
enthalten war.
-
Aber es enthält immer noch das (?=.*_)
-
Durch das Entfernen des (?!.*\W)
sind Sonderzeichen optional geworden. Jetzt ist ein Unterstrich erforderlich, aber jedes andere Sonderzeichen kann verwendet oder nicht verwendet werden, da es optional ist.
Muster 4:
Passwort muss eine Ziffer von 1 bis 9, einen Kleinbuchstaben, einen Großbuchstaben und einen Unterstrich enthalten und 8-16 Zeichen lang sein. Die Verwendung eines anderen Sonderzeichens und die Verwendung von Leerzeichen sind optional.
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
Unterschied zum Muster 3
-
Hier haben wir (?=.*_)
& (?!.* )
nicht verwendet, was im Muster 3
enthalten war.
-
Durch das Entfernen von (?=.*_)
ist es nicht mehr erforderlich, einen Unterstrich zu verwenden. Jetzt ist die Verwendung von Sonderzeichen optional.
-
Durch das Entfernen des (?!.* )
ist die Verwendung von Leerzeichen ebenfalls optional geworden.