Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个正则表达式有什么错误?_Php_Regex - Fatal编程技术网

Php 这个正则表达式有什么错误?

Php 这个正则表达式有什么错误?,php,regex,Php,Regex,我使用此代码验证全名。我希望用户输入一个名称,如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]+$/"

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

因为空格是可选的。

括号语句后缺少一个乘数

类似这样的方法会更好:/^[A-Za-z]+?[A-Za-z]+$/ 否则,这意味着您要为每个括号语句寻找一个1字符长的字符串。这里有+符号,表示一个或更长。

请尝试以下方法:

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

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

/^[A-Za-z]+\.?(\s+[A-Za-z]+\.?)*$/
如果要将名称之间的空格限制为一个空格键字符,请将\s+替换为[]

此外,如果要允许前导空格和/或尾随空格,请在填充图案的开头和/或结尾添加\s*


匹配示例:小约翰·W·多伊

我的名字:佩哈·冯·特拉彭豪斯怎么样?顺便说一句,你只接受一个字母,因为那是我的名字,我无效@PeeHaa-hehe你有一个无效的名字:p。