2012-10-21 41 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·多伊小

相关问题