你可以關注@托馬斯的解決方案來定義的符號,所有非字詞\W
,但請注意這包括空格。如果用戶的密碼中有一個換行符,他們幾乎肯定會被鎖定。
對於密碼,通過描述準確描述哪些字符是值得的。如果你想使用代字號~
或句號.
,只需按照@anubhava的建議將它們添加到正則表達式的字符類中。
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$"
// ^ ^
// \__add them here __/_________
// | | | |
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&~\.])[A-Za-z\[email protected]$!%*#?&~\.]{8,}$"
要使用正則表達式負責任的,我們的目標應該是要了解什麼是引擎蓋下回事。以下是您正在使用的正則表達式的工作原理的演練。
^
// From the beginning of your string
(?=.*[A-Za-z])
// Look ahead (?= )
// any number of chars .*
// Until you find an alpha character [A-Za-z]
(?=.*\d)
// Look ahead (?= )
// any number of chars .*
// Until you find a digit \d
(?=.*[[email protected]$!%*#?&])
// Look ahead (?= )
// any number of chars .*
// Until you find one of these chars [[email protected]$!%*#?&]
[A-Za-z\[email protected]$!%*#?&]{8,}
// Find any of these characters [A-Za-z\[email protected]$!%*#?&]
// 8 or more times {8,}
來源
2016-06-28 12:28:38
Cam
*「所有特殊字符」*?定義它們,你有你的答案。 –
這意味着你不明白給出的解決方案。只需將這些特殊字符添加到你的角色類。 – anubhava
將它們添加到[$ @ $!%*#?&]中。加點時記得給斜線(\。)。用「〜」 - 我不知道是否需要斜線,但你可以試試。 –