888 Stimmen

Der Regex für das Passwort muss mindestens acht Zeichen enthalten, mindestens eine Zahl sowie sowohl Klein- als auch Großbuchstaben und Sonderzeichen.

Ich möchte einen regulären Ausdruck verwenden, um das folgende zu überprüfen:

Ein Passwort muss mindestens acht Zeichen lang sein, mindestens eine Zahl enthalten und sowohl Klein- als auch Großbuchstaben sowie Sonderzeichen wie #, ?, ! enthalten.

Es darf nicht Ihr altes Passwort enthalten oder Ihren Benutzernamen, "password" oder "websitename".

Und hier ist mein Validierungsausdruck, der für acht Zeichen einschließlich einem Großbuchstaben, einem Kleinbuchstaben und einer Zahl oder einem Sonderzeichen gilt.

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

Wie kann ich es für ein Passwort muss acht Zeichen lang sein, einschließlich eines Großbuchstabens, eines Sonderzeichens und alphanumerischer Zeichen schreiben?

2243voto

Srinivas Punkte 19165

Mindestens acht Zeichen, mindestens ein Buchstabe und eine Zahl:

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

Mindestens acht Zeichen, mindestens ein Buchstabe, eine Zahl und ein Sonderzeichen:

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"

Mindestens acht Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe und eine Zahl:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

Mindestens acht Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"

Mindestens acht und maximal 10 Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen:

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"

789voto

anubhava Punkte 713155

Sie können dieses Regex mit mehreren Lookahead-Assertionen (Bedingungen) verwenden:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$

Dieses Regex wird diese Regeln durchsetzen:

  • Mindestens ein Großbuchstabe des englischen Alphabets, (?=.*?[A-Z])
  • Mindestens ein Kleinbuchstabe des englischen Alphabets, (?=.*?[a-z])
  • Mindestens eine Ziffer, (?=.*?[0-9])
  • Mindestens ein Sonderzeichen, (?=.*?[#?!@$%^&*-])
  • Mindestens acht Zeichen lang .{8,} (mit den Ankerpunkten)

136voto

Matt Timmermans Punkte 44589

Reguläre Ausdrücke haben keinen UND-Operator, daher ist es ziemlich schwierig, einen Regex zu schreiben, der gültige Passwörter erfasst, wenn die Gültigkeit durch etwas ANDeres UND etwas ANDeres UND etwas ANDeres definiert ist...

Aber reguläre Ausdrücke haben einen ODER-Operator, also wenden Sie einfach den DeMorgan'schen Satz an und schreiben Sie einen Regex, der ungültige Passwörter erfasst:

Alles mit weniger als acht Zeichen ODER alles ohne Zahlen ODER alles ohne Großbuchstaben ODER oder alles ohne Kleinbuchstaben ODER alles ohne Sonderzeichen.

Also:

^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$

Wenn irgendetwas zu diesem passt, dann ist es ein ungültiges Passwort.

58voto

SHASHANK HONRAO Punkte 581

Verwenden Sie das folgende Regex, um die folgenden Bedingungen zu erfüllen:

Bedingungen:

  1. Mindestens 1 Großbuchstabe.
  2. Mindestens 1 Kleinbuchstabe.
  3. Mindestens 1 Sonderzeichen.
  4. Mindestens 1 Zahl.
  5. Mindestens 8 Zeichen.
  6. Maximal 30 Zeichen.

Regex:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/

54voto

Rasaf Ibrahim Punkte 530

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X