2017-11-16 2 views
0

Anforderungen: Müssen mehr als 4 Zeichen lang sein Muss a-zA-Z mindestens einen Buchstaben enthalten alle das gleiche Zeichen nicht sein (unabhängig von der LängeRegex [4 Zeichen, ein Buchstabe, können nicht alle das gleiche Zeichen sein]

)

basiert auf einer previous answer kam ich mit:

(?!.*([A-Za-z0-9])\1{2})(?=.*[a-z]).{5,} 

und es funktioniert gut nicht Werte wie "aaaaa" entsprechen.

(?!.*([A-Za-z0-9])\1{2}) stellt sicher, dass keiner der Zeichen mehr als zweimal hintereinander wiederholt wird.

(?=.*[a-z]) benötigt mindestens einen Kleinbuchstaben

Das Problem ist, ich die „Zeile“ müssen gültig sein (ich benutze die Regex zu Validierungszwecken), wenn das Wort mit wiederholten Zeichen Teil eines Satzes ist (nicht auf sein eigenes) z "beinhaltet AAA-Batterien".

Antwort

1

Sie könnten versuchen, den Ausdruck aus dem ersten negativen Vorgriff zu entfernen "*":

(?!([A-Za-z0-9])\1{2})(?=.*[a-z]).{5,} 

Dies entspricht jetzt: hallo AAAAA Test oder enthält AAA-Batterien

Aber es passt noch nicht: AAAAA

Edit:

Wenn Sie, sollten Sie auch Ausdrücke wie AAAAA Batterien tatsächlich unterstützen verwenden:

(?!([A-Za-z0-9])\1{2}$)(?=.*[a-z]).{5,} 

Credits @ Brian Stephens auf dieser Korrektur gehen.

+0

perfekt. Danke – Angelo

+1

Dies erfüllt nicht alle Anforderungen des OP. Es wird "AAA-Batterien" als ungültig betrachten, wenn er wollte, dass es gültig ist. Sie benötigen einen "$" - Anker im negativen Lookahead. –

+0

Vielen, vielen Dank für den Hinweis: @BrianStephens. –

1

Ich denke, das regex ist, was Sie brauchen:

(?=.*[a-zA-Z])(?=.*\d)(?!.*([A-Za-z0-9])\1{1}).{4,} 

es ein wenig zu erklären:

(?=.*[a-zA-Z])    // To make sure there is at least one letter (uppercase or lower case) 
(?!.*([A-Za-z0-9])\1{2}) // To make sure nothing will repeat twice in a row 
.{4,}      // Have at least 4 characters 

Diese Regex wird es erlauben, wie

aa23 
A123 
a1234 
A1234 
$%$%a 
$%$%A 

auszuschließen, seltsam 'Zeichen, die Sie hinzufügen müssen (?!.*[\W]) wie folgt:

(?=.*[a-zA-Z])(?!.*[\W])(?!.*([A-Za-z0-9])\1{1}).{4,} 
Verwandte Themen