Php preg_match()+;0-1x和数字

Php preg_match()+;0-1x和数字,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试为电话号码制作regexp。分别。对于此输入: +420123456 -> valid 123456 -> valid 各自的I-want regexp,其中可以是1位或0位+折叠的1位或n位数字 function isTelephoneNumber($telephone) { preg_match("~^[+]{0,1}[0-9]+$~", $telephone,$match); return (count($match)>0) ? true:fa

我正在尝试为电话号码制作regexp。分别。对于此输入:

+420123456 -> valid
123456 -> valid
各自的I-want regexp,其中可以是1位或0位+折叠的1位或n位数字

function isTelephoneNumber($telephone) {
    preg_match("~^[+]{0,1}[0-9]+$~", $telephone,$match);
    return (count($match)>0) ? true:false;
}
也试过

"~^\+{0,1}[0-9]+$~"
"~^[+]?[0-9]+$~"
"~^\+?[0-9]+$~"

但是+字符有问题。

您的
+
没有转义。这一个应该做这项工作:

preg_match("/^\+?\d+$/", $telephone,$match);
\+?
=>零或一+


\d+
=>一个或多个数字

您的正则表达式工作正常。事实上,您的所有尝试在我看来都很正常(尽管我个人更喜欢
“(^\+?\d+$)”
)@NiettheDarkAbsol为什么是捕获组?@AvinashRaj它不是捕获组。我使用括号作为分隔符有两个原因:1。“仅仅因为它是一个分隔符”,不需要逃避任何事情。曾经2.它提醒我,结果中的
[0]
是整个匹配。这不是您的正则表达式,可能是另一个问题?