所以我正在設計一個註冊頁面並檢查用戶名是字母數字。字母數字和更多
else if(!eregi("^([0-9a-z])+$", $subuser)){
$form->setError($field, "* Username not alphanumeric");
我用它來做到這一點。有什麼辦法可以包含下劃線(_),短劃線( - )和空格? 感謝
所以我正在設計一個註冊頁面並檢查用戶名是字母數字。字母數字和更多
else if(!eregi("^([0-9a-z])+$", $subuser)){
$form->setError($field, "* Username not alphanumeric");
我用它來做到這一點。有什麼辦法可以包含下劃線(_),短劃線( - )和空格? 感謝
您可以使用:
else if(!eregi("^([0-9a-z_ -])+$", $subuser)){
你只需要一個underscore(_)
,一個hyphen (-)
和space()
添加到焦炭類。這三個連字符中只有特殊含義的字符類,但只有,如果它的兩側由char包圍。所以爲了避免這種情況,你可以在開始或結束時加入它。你也可以將它包含在中間並轉義它。
所以下面也有效:
else if(!eregi("^([-0-9a-z_ ])+$", $subuser)){
else if(!eregi("^([0-9a-z_\- ])+$", $subuser)){
您可以使用這樣
if(!eregi("^([0-9a-z-_ ])+$", $subuser))
u能在這個支架添加儘可能多的特殊字符[0-9A-Z-_]但要確保有些需要通過(斜槓)轉義
使用preg_match語法學習更好,因爲這是一個標準的正則表達式檢查。
與它應該是這樣的:
$bValid = preg_match("/^[\w\d-_]*$/", $sUsername);
的羽毛閱讀正則表達式檢查讀http://www.php.net/manual/en/intro.pcre.php
和的preg_match和額日格之間的短比較看http://answers.yahoo.com/question/index?qid=20080327071915AAO0O2w
upvoted作爲唯一的非棄用preg答案。雖然我會明確說明,而不是類,因爲\ w可以根據區域設置而有所不同。 – 2010-04-30 15:45:22
OMG刪除最後一個。這雅虎的答案是可怕的。 ereg被棄用,就是這樣。其餘的都是垃圾。什麼是「二進制安全」?而對於網頁大小的數據片段,速度差異是微不足道的 – 2010-04-30 15:54:57
@shrapnel我同意。更新。 – Alexar 2010-04-30 16:53:35
太差eregi在PHP中被棄用。 – 2010-04-30 15:41:42