Ich möchte, dass ein regulärer Ausdruck dies überprüft:
Ein Passwort enthält mindestens acht Zeichen, darunter mindestens eine Zahl und umfasst sowohl niedrigere als auch Großbuchstaben und Sonderzeichen, zum Beispiel #
, ?
, !
.
Es kann nicht Ihr altes Passwort sein oder Ihren Benutzernamen enthalten "password"
, oder"websitename"
Und hier ist mein Validierungsausdruck für acht Zeichen, einschließlich eines Großbuchstaben, eines Kleinbuchstaben und einer Zahl oder eines Sonderzeichens.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Wie kann ich es schreiben, denn ein Passwort muss aus acht Zeichen bestehen, darunter ein Großbuchstabe, ein Sonderzeichen und alphanumerische Zeichen ?
quelle
Sie können diesen regulären Ausdruck mit mehreren Lookahead-Zusicherungen (Bedingungen) verwenden :
Dieser reguläre Ausdruck erzwingt die folgenden Regeln:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(mit den Ankern)quelle
Reguläre Ausdrücke haben keinen UND-Operator, daher ist es ziemlich schwierig, einen regulären Ausdruck zu schreiben, der gültigen Passwörtern entspricht, wenn die Gültigkeit durch etwas UND etwas anderes UND etwas anderes definiert wird ...
Reguläre Ausdrücke haben jedoch einen ODER-Operator. Wenden Sie also einfach den Satz von DeMorgan an und schreiben Sie einen regulären Ausdruck, der mit ungültigen Kennwörtern übereinstimmt:
Alles mit weniger als acht Zeichen ODER alles ohne Zahlen ODER alles ohne Großbuchstaben ODER oder alles ohne Kleinbuchstaben ODER alles ohne Sonderzeichen.
Damit:
Wenn etwas dazu passt, ist es ein ungültiges Passwort.
quelle
|[a-zA-Z0-9]*
daraus entfernen .Nur eine kleine Verbesserung für die Antwort von @ anubhava: Da Sonderzeichen auf die Zeichen auf der Tastatur beschränkt sind, verwenden Sie diese für jedes Sonderzeichen:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Dieser reguläre Ausdruck erzwingt die folgenden Regeln:
quelle
\W
nur ASCII-Zeichen. Sie haben das also nicht geändert, und jetzt müssen Sie Leerzeichen herausfiltern. Darüber hinaus sind alle von{1,}
Ihnen hinzugefügten Klammern und Quantifizierer reines Rauschen, und das Entfernen der nicht gierigen (?
) Operatoren war sinnlos. Hier gibt es keine Verbesserung.Ich hatte einige Schwierigkeiten, der beliebtesten Antwort für meine Umstände zu folgen. Zum Beispiel schlug meine Validierung mit Zeichen wie
;
oder fehl[
. Ich war nicht daran interessiert, meine Sonderzeichen in eine weiße Liste aufzunehmen, daher habe ich stattdessen[^\w\s]
als Test - einfach ausgedrückt - die Übereinstimmung von Nicht-Wort-Zeichen (einschließlich numerischer Zeichen) und Nicht-Leerzeichen verwendet. Zusammenfassend ist hier, was für mich funktioniert hat ...8
Zeichen1
numerisches Zeichen1
Kleinbuchstaben1
Großbuchstaben1
SonderzeichenJSFiddle Link - einfache Demo für verschiedene Fälle
quelle
(?=.*?[^\w\s])
mit(?=.*?([^\w\s]|[_]))
Unterstützung für Unterstrichen hinzuzufügen und es funktioniert jetzt groß. Auch @ Dinish.net, das System, das ich verwende, schneidet das Leerzeichen aus der Kennwortzeichenfolge heraus, wenn wir es erhalten. Daher würde die Verwendung der Vanilla JS String.prototype.trim () -Methode gut funktionieren, wenn Sie diese Antwort verwenden möchten.Eine "allgemeinere" Version (?), Die keine englischen Buchstaben als Sonderzeichen zulässt .
quelle
Importieren Sie die JavaScript-Datei
jquery.validate.min.js
.Sie können diese Methode verwenden:
quelle
Probier diese:
Ausdruck:
Optionale Sonderzeichen:
Ausdruck:
Wenn die Min- und Max-Bedingung nicht erforderlich ist, entfernen Sie sie
.{6, 16}
quelle
Die Frage nicht direkt beantworten, aber muss es wirklich eine Regex sein?
Ich habe viel Perl gemacht und mich daran gewöhnt, Probleme mit Regexen zu lösen. Wenn sie jedoch mit all den Voraussichten und anderen Macken komplizierter werden, müssen Sie Dutzende von Komponententests schreiben, um all diese kleinen Fehler zu beseitigen.
Darüber hinaus ist ein Regex in der Regel einige Male langsamer als eine zwingende oder funktionale Lösung.
Zum Beispiel löst die folgende (nicht sehr FP) Scala-Funktion die ursprüngliche Frage etwa dreimal schneller als der reguläre Ausdruck der beliebtesten Antwort. Was es tut, ist auch so klar, dass Sie überhaupt keinen Komponententest benötigen:
quelle
Ich würde Peter Mortensen antworten, aber ich habe nicht genug Ruf.
Seine Ausdrücke sind perfekt für jede der angegebenen Mindestanforderungen. Das Problem mit seinen Ausdrücken, für die keine Sonderzeichen erforderlich sind, besteht darin, dass sie auch keine Sonderzeichen zulassen, sodass sie auch maximale Anforderungen erzwingen, die meines Erachtens vom OP nicht angefordert wurden. Normalerweise möchten Sie Ihren Benutzern erlauben, ihr Passwort so sicher zu machen, wie sie wollen. Warum sichere Passwörter einschränken?
Also, sein Ausdruck "mindestens acht Zeichen, mindestens ein Buchstabe und eine Zahl":
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
erreicht die Mindestanforderung, aber die verbleibenden Zeichen können nur Buchstaben und Zahlen sein. Um Sonderzeichen zuzulassen (aber nicht zu erfordern), sollten Sie Folgendes verwenden:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
Zeichen zulassenoder
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
um bestimmte Sonderzeichen zuzulassenEbenso "mindestens acht Zeichen, mindestens ein Großbuchstabe, ein Kleinbuchstabe und eine Zahl:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
erfüllt diese Mindestanforderung, erlaubt jedoch nur Buchstaben und Zahlen. Verwenden:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
Zeichen zulassenoder
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
um bestimmte Sonderzeichen zuzulassen.quelle
quelle
|{}:;<>/])[A-Za-z\d$@$!%*?&+~
| {} :; <> /] {8,15}, die die folgenden nichtalphanumerischen Zeichen enthalten: (@ $!% *? & + ~ `| {} :; <> /)Was ist mit der Betrachtung der folgenden Regex-Lösung:
^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$
Was Folgendes bestätigt:
Überprüfen Sie es unter dem folgenden Link: https://regex101.com/r/qPmC06/4/
quelle
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W\_])[A-Za-z\d\W\_]{8,}$
?Je nach Bedarf sollte dieses Muster einwandfrei funktionieren. Versuche dies,
Erstellen Sie einfach eine Zeichenfolgenvariable, weisen Sie das Muster zu und erstellen Sie eine boolesche Methode, die true zurückgibt, wenn das Muster korrekt ist, andernfalls false.
Stichprobe:
quelle
Ich habe hier viele Probleme gefunden, also habe ich meine eigenen gemacht.
Hier ist es in seiner ganzen Pracht, mit Tests:
https://regex101.com/r/DCRR65/4/tests
Dinge, auf die Sie achten sollten:
\w
weil das beinhaltet_
, worauf ich teste.quelle
quelle
@ClasG hat bereits vorgeschlagen :
_ (Unterstrich) wird jedoch nicht als Sonderzeichen akzeptiert (z. B. Aa12345_).
Eine verbesserte ist:
quelle
Demo:
quelle
Testen Sie dieses im Jahr 2020:
Überprüfen Sie sich
quelle
quelle
Nur können wir dies mit HTML5 tun.
Verwenden Sie den folgenden Code im Musterattribut.
Es wird perfekt funktionieren.
quelle
Sie können das folgende Muster für reguläre Ausdrücke verwenden, um das Kennwort zu überprüfen, ob es Ihren Erwartungen entspricht oder nicht.
quelle
Linkprüfung online unter https://regex101.com/r/mqGurh/1
quelle
Benutze das,
Es wird für mindestens einen Kleinbuchstaben, einen Großbuchstaben, eine Zahl und die Sonderzeichen von (!, @, #, $,%,?, =, *, &) Validiert.
Die minimale Länge beträgt 8 und die maximale Länge beträgt 20
quelle
Testen Sie in Java / Android ein Kennwort mit mindestens einer Zahl, einem Buchstaben und einem Sonderzeichen in folgendem Muster:
quelle
Versuche dies:
Dieser reguläre Ausdruck funktioniert perfekt für mich.
quelle
Muster für mindestens 1 Großbuchstaben, 1 Ziffer und Sonderzeichen sowie eine Länge zwischen 8 und 63.
^ (? =. [az]) (? =. [AZ]) (? =. * \ d) [a-zA-Z \ d \ W] {8,63} $
Dieses Muster wurde für die JAVA-Programmierung verwendet.
quelle
Hoffe das unten funktioniert. Ich habe dies in der benutzerdefinierten Azure-Richtlinie versucht.
^ (?. = [Az]) (?. = [AZ]) (?. = ?. \ D) (= [@ # $% ^ & * -_ + = [] {} | \:‘,? /
~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~ "();!] |. (?! @)) {6,16} $quelle
Ich habe gerade die erste Antwort hier kopiert und sie in einen bequemeren regulären Ausdruck umgewandelt, der einen oberen, einen unteren und mindestens 8 Zeichen benötigt, aber alles "dazwischen" akzeptiert.
Dies ist ein Beispiel-Regex, der erfordert
WICHTIG : Dieser reguläre Ausdruck schließt auch alle anderen Zeichen aus, z. B. Zahlen, Sonderzeichen wie $, #,! usw. - solange die Regeln 1. bis 3. mit der Eingabezeichenfolge übereinstimmen
Pass auf "." fast am Ende des regulären Ausdrucks. Dies entspricht fast jedem (und afaik jedem lesbaren) Zeichen
quelle
Wenn Sie reguläre Ausdrücke verwenden möchten, um nach mindestens acht Zeichen zu suchen, mindestens einem Großbuchstaben, mindestens einem Kleinbuchstaben, mindestens einer Zahl von 0 bis 9 und mindestens einem Sonderzeichen von :! @ # $% ^ & * _? UND geben Sie dem Benutzer auch ein bisschen mehr Informationen darüber, was im Passwort fehlt. Sie können den folgenden Code verwenden:
quelle
Eine Lösung, die ich in einer der vorherigen Antworten gefunden habe:
* Mindestens 8 Zeichen, mindestens 1 Großbuchstaben, 1 Kleinbuchstaben, 1 Zahl und 1 Sonderzeichen:
... hat bei mir nicht funktioniert, aber das Folgende ist eine vereinfachte Version und funktioniert hervorragend (fügen Sie ein beliebiges Sonderzeichen hinzu, ich habe hier # hinzugefügt) und fügen Sie die Zahlenregel hinzu, wie Sie es mit den Buchstaben tun:
quelle