我正在使用此代码验证全名。我希望用户输入一个名称,如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 :(得分:2)
尝试这种方式:
"/^[A-Za-z]+(\s[A-Za-z]+)?$/"
答案 1 :(得分:1)
添加+
以匹配长于一个字符的名称;)
"/^[A-Za-z]+ ?[A-Za-z]+$/"
答案 2 :(得分:1)
角色不重复。它只允许在空格之前和之后的角色。
^[A-Za-z]+(\s)+?[A-Za-z]+$
请记住模式^[A-Za-z] ?[A-Za-z]$
可以匹配
JohnWoo
因为空格是可选的。
答案 3 :(得分:1)
您在括号声明后缺少一个乘数。
这样的事情会更好:"/^[A-Za-z]+ ?[A-Za-z]+$/"
否则,这意味着您正在为每个括号语句查找1个字符长字符串。这里有+
标志,“一个或多个”。
答案 4 :(得分:0)
由于名称可能还有一个中间名,首字母后跟句点,或者可能有更多名称,你应该使用正则表达式
/^[A-Za-z]+\.?(\s+[A-Za-z]+\.?)*$/
如果您想将名称之间的空格仅限制为一个空格字符,请将\s+
替换为[ ]
此外,如果您想允许前导和/或尾随空格,请在模式的开头和/或结尾添加\s*
。
比赛示例: John W. Doe Jr。