2012-10-21 61 views
-3

我正在使用此代碼來驗證全名。我希望用戶輸入一個名稱,如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"; 
+0

那我的名字:PeeHaa馮Trappenhaus比賽


實例?順便說一句,你只接受單個字母 – PeeHaa

+0

@PeeHaa不工作 – user1752660

+2

那麼,因爲那是我的名字,我無效? :( – PeeHaa

回答

1

添加+也長於一個字符相匹配的名字;)

"/^[A-Za-z]+ ?[A-Za-z]+$/" 
1

的字符不重複。它只允許在空間前後的角色。

^[A-Za-z]+(\s)+?[A-Za-z]+$ 

記住圖案^[A-Za-z] ?[A-Za-z]$可以匹配

JohnWoo 

,因爲空間是可選的。

+0

@ user1752660太棒了!很高興聽到那個 –

1

您在支架聲明後缺少乘數。

類似這樣的會更好:"/^[A-Za-z]+ ?[A-Za-z]+$/" 否則,它意味着您正在尋找每個括號語句的1個字符長字符串。這裏有+符號,它是「一個或更多」

+0

謝謝它的工作 – user1752660

0

正如名字也可以有一箇中間名,初始隨後期,或可能更多的名字,你應該用正則表達式

/^[A-Za-z]+\.?(\s+[A-Za-z]+\.?)*$/ 

如果你去想要限制名稱之間的空格只是一個空格鍵字符,請用[ ]替換\s+

此外,如果要允許前導和/或尾部空格,在模式的開始和/或結束處添加\s*約翰·W·多伊小

相關問題