Password validation regex

8

Ich versuche, einen regulären Ausdruck zu erhalten, der Folgendes bewirkt:

  1. stellt sicher, dass keine Leerzeichen vorhanden sind
  2. Mindestlänge von 8
  3. stellt sicher, dass es mindestens:
    • ein Nicht-Alpha-Zeichen
    • ein Großbuchstabe
    • ein Kleinbuchstabe

Ich habe diesen regulären Ausdruck gefunden:

%Vor%

welche die obigen Punkte 2 und 3 berücksichtigt, aber wie füge ich die erste Bedingung zu dem obigen Regex-Ausdruck hinzu?

Ich weiß, dass ich zwei Ausdrücke oben und dann

machen kann %Vor%

Aber ich hätte gerne alles in einem, ich habe versucht, etwas wie ?!\s zu machen, aber ich konnte es nicht zum Laufen bringen. Irgendwelche Ideen?

    
Jose 21.02.2011, 16:59
quelle

2 Antworten

17
%Vor%

sollte tun. Beachten Sie jedoch, dass Sie nur ASCII-Buchstaben validieren. Ist Ä kein Buchstabe für Ihre Anforderungen?

\S bedeutet "ein beliebiges Zeichen mit Ausnahme von Leerzeichen". Wenn Sie also diesen Punkt anstelle des Punkts verwenden und die Regex am Anfang und Ende der Zeichenfolge verankern, stellen wir sicher, dass die Zeichenfolge keine Leerzeichen enthält.

Ich habe auch die unnötigen Klammern um den gesamten Ausdruck entfernt.

    
Tim Pietzcker 21.02.2011, 17:05
quelle
7

Tims Antwort funktioniert gut und ist eine gute Erinnerung, dass es viele Möglichkeiten gibt, das gleiche Problem mit Regexen zu lösen, aber Sie waren auf dem richtigen Weg, selbst eine Lösung zu finden. Wenn Sie (?! \ S) in (?!. * \ S) geändert und die Anker ^ und $ am Ende hinzugefügt hätten, würde es funktionieren.

%Vor%     
EvilAmarant7x 21.02.2011 17:24
quelle

Tags und Links