Wie lautet der reguläre Ausdruck, um sicherzustellen, dass eine bestimmte Zeichenfolge mindestens ein Zeichen aus jeder der folgenden Kategorien enthält?
- Kleinbuchstabe
- Großbuchstabe
- Ziffer
- Symbol
Ich weiß , dass die Muster für einzelne Sätze nämlich [a-z]
, [A-Z]
, \d
und _|[^\w]
(ich habe sie zu korrigieren, nicht wahr?).
Aber wie kombiniere ich sie, um sicherzustellen, dass die Zeichenfolge all diese in beliebiger Reihenfolge enthält?
Antworten:
Wenn Sie einen einzelnen regulären Ausdruck benötigen, versuchen Sie:
Eine kurze Erklärung:
Und ich stimme SilentGhost zu,
\W
könnte ein bisschen breit sein. Ich würde es durch einen Zeichensatz wie diesen ersetzen:[-+_!@#$%^&*.,?]
(Sie können natürlich noch mehr hinzufügen!)quelle
.+
in ändere.*
? Ich konnte keinen Testfall finden, der fehlschlägt.*
. Sind sie in diesem Zusammenhang gleich? "Null oder mehr Zeichen" scheint in Ordnung zu sein - nur um Bestätigung zu bitten..+
in.*
oder sogar.{4,}
in diese Angelegenheit zu verwandeln.^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[&%$]).{6,}$
Bart Kiers, Ihre Regex hat ein paar Probleme. Der beste Weg, dies zu tun, ist folgender:
Auf diese Weise suchen Sie, egal ob am Anfang, am Ende oder in der Mitte. In Ihrem Fall habe ich viele Probleme mit komplexen Passwörtern.
quelle
Sie können diese drei Gruppen separat zuordnen und sicherstellen, dass sie alle vorhanden sind. Auch
[^\w]
scheint ein wenig zu breit, aber wenn das , was Sie wollen Sie vielleicht , es ersetzen wollen\W
.quelle
\W
und[\W]
führen zu dem gleichen.