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