ASP.NET Regular Expression Validator (Passwortstärke)
Habe ich ein Validierungs-control, der den folgenden Ausdruck:
(?=(.*\\d.*){2,})(?=(.*\\w.*){2,})(?=(.*\\W.*){1,}).{8,}
Dass ein Passwort mit mindestens 2 Ziffern, 2 alpha-Zeichen, 1 nicht-alphanumerisches und 8 Zeichen, mindestens. Leider scheint dies nicht zu sein, die cross-browser kompatibel.
Diese überprüfung funktioniert einwandfrei im Firefox, aber nicht im Internet Explorer.
Eine Kombination der einzelnen Antworten ergibt sich:
var format = "^(?=.{" + minLength + ",})" +
(minAlpha > 0 ? "(?=(.*[A-Za-z].*){" + minAlpha + ",})" : "") +
(minNum > 0 ? "(?=(.*[0-9].*){" + minNum + ",})" : "") +
(minNonAlpha > 0 ? "(?=(.*\\W.*){" + minNonAlpha + ",})" : "") + ".*$";
EX: "^(?=.{x,})(?=(.*[A-Za-z].*){y,})(?=(.*[0-9].*){z,})(?=(.*\W.*){a,}).*$"
Der wichtige Teil ist mit dem (?.{x,}) für die Länge ersten.
InformationsquelleAutor nyxtom | 2008-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
(?=(.*\W.*){0,})
ist nicht 0 ist nicht-alphanumerische Zeichen. Es ist mindestens 0 nicht-alphanumerische Zeichen. Wenn Sie wollte, die Ihr Passwort enthält keine nicht-alphanumerischen Zeichen, die Sie tun konnte, entweder(?!.*\W)
oder(?=\w*$)
.Eine einfachere Lösung wäre, überspringen Sie die
\W
look-ahead, und verwenden Sie\w{8,}
statt.{8,}
.Auch
\w
umfasst\d
. Wenn Sie wollte nur die alpha die Sie tun könnten, entweder[^\W\d]
oder[A-Za-z]
.Wäre dies die Bestätigung des Kennwortes zu enthalten mindestens zwei Ziffern, zwei alphas, werden mindestens 8 Zeichen lang, und enthalten nur alpha-numerische Zeichen (einschließlich Unterstrich).
\w
=[A-Za-z0-9_]
\d
=[0-9]
\s
=[ \t\n\r\f\v]
Edit:
Die Verwendung dieser in allen Browsern müssen Sie wahrscheinlich etwas wie das hier tun:
Edit2: Dem letzten update in der Frage fast untauglich für meine ganze Antwort.
^^;;
Sollten Sie noch in der Lage sein zu verwenden, der JavaScript-code am Ende, wenn Sie ersetzen Sie das Muster mit dem, was Sie ursprünglich hatten.
Edit3: OK. Jetzt sehe ich, was du meinst.
Scheint es
(?= )
ist nicht wirklich " zero-width im Internet Explorer.http://development.thatoneplace.net/2008/05/bug-discovered-in-internet-explorer-7.html
Edit4: Mehr Lesen: http://blog.stevenlevithan.com/archives/regex-lookahead-bug
Ich denke, das kann dein problem lösen:
Den
(?=.{8,}$)
muss zuerst kommen.InformationsquelleAutor Markus Jarderot
Diese erhalten Sie 2 Ziffern min, 2 min Zeichen und min 8 Zeichen Länge... ich weigere mich, zu zeigen, wie Sie nicht zulassen, dass Benutzer, die nicht-alphanumerische Zeichen in Ihrer Kennwörter, warum Websites durchsetzen wollen weniger sichere Passwörter?
Wie nicht mit nicht-alphanumerische chars machen ein Passwort weniger sicher?
[Lesen] ".. ich weigere mich, zu zeigen, wie Sie nicht Benutzern erlauben, nicht-alphanumerische Zeichen"
InformationsquelleAutor sontek
Wie über die vorhandene jQuery-basierte Passwort-Stärke Prüfungen wie:
http://scripts.simplythebest.net/4/Ajax-Password-Strength-Meter-software.html
Sollten Sie wirklich sein, die Validierung auf der Serverseite unabhängig davon, welche client-seitige Validierung kann getan worden. Es gibt keine Garantie, die client hat alles, was Sie denken sollte (Der browser kann javascript deaktiviert haben, kann Der Kunde nicht einmal einen browser.).
InformationsquelleAutor David Laing