我一直在閱讀和閱讀正則表達式,但我想不出有什麼錯我的代碼:Eregi驗證問題
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
它永遠不會返回true。我試圖驗證用戶名,只允許小寫a-z,大寫a-z,數字,連字符和下劃線。
我一直在閱讀和閱讀正則表達式,但我想不出有什麼錯我的代碼:Eregi驗證問題
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
它永遠不會返回true。我試圖驗證用戶名,只允許小寫a-z,大寫a-z,數字,連字符和下劃線。
eregi()
已棄用。改爲使用preg_match()
。
您沒有regex delimiters(例如/
,@
,~
等)。使用preg_match('/^[\w-]+\z/')
。
/
是我用過的分隔符。 PHP允許你使用many other characters。\w
是[A-Za-z0-9_]
的快捷方式。在這裏有用的是使正則表達式更短,希望更清晰。-
不是有效範圍的一部分,則按照字面意思。我沒有逃脫它,因爲它不需要在這種情況下逃脫。+
是一個量詞,表示匹配1次或多次。你需要在這裏。\z
表示匹配字符串的結尾。您使用$
,這將允許尾隨\n
。不要使用eregi
- 它已過時,使用preg_match
代替:
if (preg_match("/^[A-Za-z0-9_\-]+/i$", $username)){return true;}
哇!謝謝! – Jack