-4

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

5 回答 5

2

以这种方式尝试:

"/^[A-Za-z]+(\s[A-Za-z]+)?$/"
于 2012-10-21T11:43:14.120 回答
1

添加+以匹配名称长度超过一个字符;)

"/^[A-Za-z]+ ?[A-Za-z]+$/"
于 2012-10-21T11:42:46.027 回答
1

角色不再重复。它只允许空格前后的字符。

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

记住模式^[A-Za-z] ?[A-Za-z]$可以匹配

JohnWoo

因为空格是可选的。

于 2012-10-21T11:42:57.993 回答
1

您的括号语句后缺少一个乘数。

这样的事情会更好:"/^[A-Za-z]+ ?[A-Za-z]+$/" 否则这意味着您正在为每个括号语句寻找一个 1 字符长的字符串。这里有+标志,它是“一个或更长”

于 2012-10-21T11:43:13.253 回答
0

由于名称可能还有一个中间名,首字母后跟句号,或者可能有更多名称,您应该使用正则表达式模式

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

如果您想将名称之间的空格限制为一个空格键字符,请替换\s+[ ]

此外,如果您想允许前导和/或尾随空格,\s*请在模式的开头和/或结尾添加。


匹配示例:John W. Doe Jr.

于 2012-10-21T12:51:00.550 回答