我正在使用此代码来验证全名。我希望用户输入一个名称,如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