特殊字符的正則表達式的特殊字符 - 允許強密碼驗證與PHP中
空間 - 不允許
數字字符 - 允許
信 - 允許
場8的最小長度
if (!preg_match("/([A-Za-z\S]*$){8,}/",$pass )) {
error}
但有一個呃ROR!
特殊字符的正則表達式的特殊字符 - 允許強密碼驗證與PHP中
空間 - 不允許
數字字符 - 允許
信 - 允許
場8的最小長度
if (!preg_match("/([A-Za-z\S]*$){8,}/",$pass )) {
error}
但有一個呃ROR!
我認爲你正在尋找:
if(!preg_match("/^\S{8,}$/i", $pass)) {
// error
}
您當前的表達,([A-Za-z\S]*$){8,}
,是過於複雜和缺少一些關鍵點位。
首先你的角色等級[A-Za-z\S]
不符合你的要求。 \S
與[^\s]
或[^ \t\r\n\f]
相同,換句話說就是任何非空白字符。這是所有你需要的,因爲一切都是允許的。
然後你重複這個字符類0+次,然後是字符串的結尾。這一切都很好,但是你試着重複整個組合8次以上。你真正需要做的就是重複8次以上的字符類別,然後是字符串的結尾(並且你還希望在字符串的開頭^
之前)。
這可以讓你:
^\S{8,}$
特殊字符怎麼樣? – 2014-10-01 17:13:43
完全讀取錯誤,*面掌*。 – Sam 2014-10-01 17:18:33
我認爲這將是足夠的,
if(!preg_match("/^[^\s]{8,}$/i", $pass)) {
// error
}
第一次有我的+1正確閱讀問題。離開我的答案,因爲我花了很多時間詳細說明;) – Sam 2014-10-01 17:20:02
你的表達會匹配任何在零個或多個結束您列出的字符的實例;因此它會匹配一切。你也沒有將它固定在前面,所以在固定零之後,只要它以有效的子串結尾,你仍然可以匹配任何密碼。和\S
將匹配所有內容這不是一個空間,這似乎不是你以後的樣子。
如果您只想使用字母,數字和下劃線,請使用/^\w{8,}$/
。如果您還想要特定的其他字符,例如.,!+
,請使用/^[\w.,!+]{8,}$/
。等(只有反斜槓和-
在字符範圍內有特殊含義)。
* *錯誤是什麼?此外,爲什麼你在世界上禁止空間? – Undo 2014-10-01 17:13:12
假設它不符合要求,因爲當我測試aaaaaa1 *時顯示錯誤 – user040311 2014-10-01 17:16:06
你是什麼意思的特殊字符? – 2014-10-01 17:16:52