Php 电话号码的预匹配功能

Php 电话号码的预匹配功能,php,preg-match,Php,Preg Match,我无法将电话号码与此功能匹配 return (bool)preg_match( '/^[\-+]?[0-9]+$/', $num); 在去掉括号()和破折号-后,上述函数总是返回false,并保留+1234567890 我遗漏了什么仅北美电话号码,您可以使用此 ^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9

我无法将电话号码与此功能匹配

return (bool)preg_match( '/^[\-+]?[0-9]+$/', $num);
在去掉括号
()
和破折号
-
后,上述函数总是返回false,并保留+1234567890


我遗漏了什么

仅北美电话号码,您可以使用此

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$
在此处测试:

输出:

1   0   1   

字符串中可能有一些空格。试用


@史密斯:你的正则表达式还可以。您的$num可能有问题,请看这里:我检查过了,没有空格
1   0   1   
return (bool)preg_match( '/^[\-+]?[0-9]+$/', trim($num));