Regulärer Ausdruck, um zu überprüfen, ob das Passwort "8 Zeichen einschließlich 1 Großbuchstaben, 1 Sonderzeichen, alphanumerische Zeichen" enthält
Ich möchte einen regulären Ausdruck, um zu überprüfen, dass
ein Passwort muss mindestens acht Zeichen, einschließlich einen Großbuchstaben, ein Sonderzeichen und alphanumerischen Zeichen.
Und hier ist meine überprüfung-Ausdruck für die acht Zeichen, einschließlich einen Großbuchstaben, einen Kleinbuchstaben und eine Zahl oder Sonderzeichen.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Wie ich es schreiben können für ein Passwort muss acht Zeichen, einschließlich einen Großbuchstaben, ein Sonderzeichen und alphanumerischen Zeichen?
InformationsquelleAutor der Frage Rania Umair | 2012-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den regulären Ausdruck, den Sie nach sind werden wahrscheinlich groß sein und ein Alptraum zu pflegen, vor allem für Leute, die nicht so vertraut mit regulären Ausdrücken.
Ich denke, es würde einfacher sein zu brechen Ihre regex nach unten und es tun ein bit zu einem Zeitpunkt. Es könnte ein bisschen mehr zu tun, aber ich bin mir ziemlich sicher, dass die Wartung und das Debuggen wäre es einfacher. Dies würde auch ermöglichen es Ihnen, mehr gerichtet Fehler-Nachrichten an die Benutzer (andere als nur
Invalid Password
) sollte die user experience zu verbessern.Von dem, was ich sehe, Sie sind ziemlich fließend in regex, so würde ich davon ausgehen, dass Ihnen die reguläre Ausdrücke tun, was Sie brauchen, wäre sinnlos.
Sehen Ihren Kommentar, ist dies, wie würde ich es angehen:
Muss mindestens acht Zeichen Lang: Sie brauchen nicht eine regex für diese. Mit der
.Length
Eigenschaft sollte genug sein.Einschließlich einen Großbuchstaben nutzen: Sie können die
[A-Z]+
regulären Ausdruck. Wenn die Zeichenfolge enthält mindestens einen Großbuchstaben, dieser reguläre Ausdruck wird der Ertragtrue
.Einen besonderen Charakter: Sie kann entweder die
\W
die passt auf jedes Zeichen, das kein Buchstabe oder eine Zahl oder sonst, können Sie etwas, das wie so[!@#]
zum angeben einer benutzerdefinierten Liste von Sonderzeichen. Beachten Sie aber, dass Charaktere wie$
^
(
und)
sind Sonderzeichen in der Sprache für reguläre Ausdrücke, so müssen Sie maskiert werden, etwa so:\$
. Also kurz gesagt, man könnte die\W
.Alphanumerische Zeichen: Mit der
\w+
sollte mit jedem Buchstaben und eine Zahl und den Unterstrich.Werfen Sie einen Blick auf diese tutorial für weitere Informationen.
InformationsquelleAutor der Antwort npinti
In einer Zeile:
Quellen:
Kennwort passenden Ausdruck
Passwort Stärke Validierung mit Regulären Ausdrücken
InformationsquelleAutor der Antwort mmdemirbas
So viele Antworten.... alle schlecht!
Reguläre Ausdrücke nicht über einen UND-operator, so ist es ziemlich schwer zu schreiben, ein regex-matches die Gültigkeit der Passwörter, wenn Gültigkeit ist definiert durch etwas UND noch etwas UND noch etwas anderes...
Aber, reguläre Ausdrücke tun eine ODER Veranstalter, so gelten Sie nur DeMorgan ' s theorem, und schreiben ein regex-matches ungültig Passwörter.
alles mit weniger als 8 Zeichen ODER nichts mit keine zahlen ODER alles ohne Großbuchstaben ODER alles keine Sonderzeichen
Also:
Wenn alles passt, dann ist es ein ungültig Passwort.
InformationsquelleAutor der Antwort Matt Timmermans
Als ein Beispiel, wie dies getan werden könnte, eine lesbare/wartbare regex.
Für eine längere regex sollten Sie immer
RegexOptions.IgnorePatternWhitespace
zu ermöglichen, whitespace und Kommentare in den Ausdruck für die bessere Lesbarkeit.InformationsquelleAutor der Antwort stema
Die Antwort ist nicht mit einem regulären Ausdruck. Dies ist sets und zählen.
Reguläre Ausdrücke sind über Bestellung.
In Ihrem Leben als Programmierer werden Sie aufgefordert, viele Dinge zu tun, die keinen Sinn machen. Lernen, um zu Graben, eine Ebene tiefer. Lernen, wenn die Frage falsch ist.
Die Frage (wenn es erwähnt reguläre Ausdrücke) ist falsch.
Pseudocode (Wechsel zwischen zu vielen Sprachen, spät):
Wette, Sie Lesen und verstehen den obigen code fast sofort. Wette, Sie hat viel mehr mit der regex, und sind weniger sicher, es ist richtig. Erweiterung der regex ist riskant. Verlängert die sofortige oben, viel weniger so.
Beachten Sie auch, die Frage ist ungenau formuliert. Ist der Zeichensatz ASCII-oder Unicode, oder ?? Meine Vermutung aus der Lektüre die Frage ist, mindestens einen Kleinbuchstaben enthalten, übernommen. Also ich denke, die davon ausgegangen Letzte Regel sollte sein:
(Ändern von hats-zur Sicherheit-konzentriert, ist dies ein wirklich nervig/nicht hilfreich Regel.)
Kennen zu lernen, wenn die Frage falsch ist, ist Massiv wichtiger als kluge Antworten. Eine kluge Antwort auf die falsche Frage ist fast immer falsch.
InformationsquelleAutor der Antwort Preston L. Bannister
Wenn Sie benötigen nur einen Großbuchstaben und Sonderzeichen, dann sollte dies funktionieren:
InformationsquelleAutor der Antwort user1096188
Den regulären Ausdruck, den Sie suchte, war:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*\[\]"\';:_\-<>\., =\+\/\\]).{8,}$/u
.Beispiel und test: http://regexr.com/3fhr4
InformationsquelleAutor der Antwort Lucas
Dieser Frage beginnt die virale und eine Menge interessanter Vorschlag erschien.
Ja, das schreiben von hand ist schwierig. So eine einfachere Lösung ist die Verwendung einer Vorlage. Obwohl die Folge regex möglicherweise nicht optimal, es wird leichter zu verwalten und/oder ändern, und die Anwender haben eine bessere Kontrolle über das Ergebnis. Es ist möglich, dass ich etwas verpasst haben, so dass jede Konstruktive Kritik hilfreich sein wird.
Diese links könnten interessant sein: match mindestens 2 Ziffern 2 Buchstaben in beliebiger Reihenfolge in einem stringSprache Für Reguläre AusdrückeErfassung von Gruppen
Ich bin mit dieser Vorlage
(?=(?:.*?({type})){({count})})
auf der Basis aller regex sah ich ALSO aus. Der nächste Schritt ist das ersetzen der benötigten Muster (number
special character
... ) hinzufügen und die Konfiguration für die Länge.Habe ich eine kleine Klasse für das erstellen der regex PasswordRegexGenerator.cs
Ein Beispiel:
InformationsquelleAutor der Antwort Bakudan
Können Sie unten Klasse für die Validierung:
wo 6 und 20 sind die minimale und maximale Länge für das Passwort.
InformationsquelleAutor der Antwort amit pandya
InformationsquelleAutor der Antwort Kailash Karki