Als Antwort auf eine Klarstellung scheint es, dass ein einzelner regulärer Ausdruck nicht unbedingt erforderlich ist. In diesem Fall schlage ich vor, dass Sie mehrere reguläre Ausdrücke oder Funktionen verwenden. Meine Vermutung ist, Leistung ist keine Voraussetzung, da diese Art von Prüfungen in der Regel als Reaktion auf Benutzereingaben durchgeführt werden. Die Validierung der Benutzereingabe kann 100 ms dauern und trotzdem augenblicklich angezeigt werden, und Sie können einen Los Code in 100 ms ausführen.
Zum Beispiel würde ich persönlich für jeden Ihrer Bedingungen in einem separaten Test überprüfen. Zuerst nach Leerzeichen suchen. Zweitens, überprüfe mindestens einen Buchstaben. Als nächstes nach mindestens einer Nummer suchen. Suchen Sie abschließend nach Feldern mit drei oder mehr Wiederholungen.
Ihr Code wird viel einfacher zu verstehen sein, und es wird viel einfacher sein, die Regeln später zu ändern (was, wie die Erfahrung gezeigt hat, mit ziemlicher Sicherheit passieren wird).
Zum Beispiel:
function do_validation(string) {
return (has_no_space(string) &&
has_no_special_char(string) &&
has_alpha(string) &&
has_digit(string) &&
! (has_repeating(string)))
Ich persönlich halte die oben Größenordnung leichter zu lesen als eine komplexe reguläre Ausdrücke. Wenn Sie eine Regel hinzufügen oder entfernen, müssen Sie einen komplexen regulären Ausdruck nicht erneut implementieren (und müssen daher alle möglichen Kombinationen erneut testen).
Ist es _have_ ein regulärer Ausdruck sein, oder könnte eine Funktion, die wahr oder falsch zurückgibt OK sein? –
Was ist mit 'AABAA'? – HamZa
@Bryan Oakley: Ich habe eine Funktion, um zu überprüfen, ob die Variable der Regex entspricht.welche geben wahr oder falsch zurück –