我正在使用此代碼來驗證全名。我希望用戶輸入一個名稱,如Abc def或Abc Def或Abc DEF等......但是由於我無法得到正確的答案。這個正則表達式有什麼問題?
if(!preg_match("/^[A-Za-z] ?[A-Za-z]$/", $value) && !empty($value))
echo "NOT MATCHING";
else if(!empty($value))
echo "MATCHING";
我正在使用此代碼來驗證全名。我希望用戶輸入一個名稱,如Abc def或Abc Def或Abc DEF等......但是由於我無法得到正確的答案。這個正則表達式有什麼問題?
if(!preg_match("/^[A-Za-z] ?[A-Za-z]$/", $value) && !empty($value))
echo "NOT MATCHING";
else if(!empty($value))
echo "MATCHING";
添加+
也長於一個字符相匹配的名字;)
"/^[A-Za-z]+ ?[A-Za-z]+$/"
的字符不重複。它只允許在空間前後的角色。
^[A-Za-z]+(\s)+?[A-Za-z]+$
記住圖案^[A-Za-z] ?[A-Za-z]$
可以匹配
JohnWoo
,因爲空間是可選的。
@ user1752660太棒了!很高興聽到那個 –
您在支架聲明後缺少乘數。
類似這樣的會更好:"/^[A-Za-z]+ ?[A-Za-z]+$/"
否則,它意味着您正在尋找每個括號語句的1個字符長字符串。這裏有+
符號,它是「一個或更多」。
謝謝它的工作 – user1752660
正如名字也可以有一箇中間名,初始隨後期,或可能更多的名字,你應該用正則表達式
/^[A-Za-z]+\.?(\s+[A-Za-z]+\.?)*$/
如果你去想要限制名稱之間的空格只是一個空格鍵字符,請用[ ]
替換\s+
此外,如果要允許前導和/或尾部空格,在模式的開始和/或結束處添加\s*
。 約翰·W·多伊小
那我的名字:PeeHaa馮Trappenhaus比賽
實例?順便說一句,你只接受單個字母 – PeeHaa
@PeeHaa不工作 – user1752660
那麼,因爲那是我的名字,我無效? :( – PeeHaa