2016-10-14 4 views
0

Ich versuche, ein gültiges HTML5-Muster für ein Passwort zu machen. Es sollte mindestens 9 Zeichen lang sein und mindestens einen Großbuchstaben, einen Kleinbuchstaben, eine Ziffer und ein Sonderzeichen dieser Liste enthaltenHTML5 - Password Regex

() [] {}?! $% &/= * + ~,.;: <> -_

Ich habe diese Regex gemacht, aber es funktioniert nicht ... kann jemand das beheben?

pattern="^(?=.*\d)(?=.*[a-z])(?=.*[()[]{}?!$%&/=*+~,.;:<>-_])(?=.*[A-Z]).{9,}?$"

Antwort

1
pattern="(?=.*\d)(?=.*[a-z])(?=.*[()\[\]{}?!$%&/=*+~,.;:<>_-])(?=.*[A-Z]).{9,}" 

Es gibt mehrere Fehler:

^(?=.*\d)(?=.*[a-z])(?=.*[()[]{}?!$%&/=*+~,.;:<>-_])(?=.*[A-Z]).{9,}?$ 
# ] needs to be escaped ----^^    ^    ^
# otherwise it will close the character class |     | 
# [ too but for no logical reason    |     | 
# the - is used to define a character range ----+     | 
# the range >-_ gives >[email protected][\]^_   | 
# there's no reason to make this quantifier non-greedy -------------+ 

Darüber hinaus verankert ^ und $ implizit sind, müssen Sie sie nicht setzen.

Beachten Sie, dass Bereiche verwenden, können Sie auch das Muster wie das schreiben:

pattern="(?=.*\d)(?=.*[a-z])(?=.*[!$%&(-/:-?_{}~])(?=.*[A-Z]).{9,}" 
+0

Vielen Dank! schön erklärt es klappt jetzt :) –