preg_match功能用于电话号码

时间:2014-01-01 17:20:59

标签: php preg-match

我在使用此功能匹配电话号码时遇到了一些麻烦

return (bool)preg_match( '/^[\-+]?[0-9]+$/', $num);

在删除括号( )后,上面的函数始终返回false,并且使用+1234567890

离开-

我缺少什么

3 个答案:

答案 0 :(得分:2)

你可能在字符串中有一些空格。尝试使用trim

return (bool)preg_match( '/^[\-+]?[0-9]+$/', trim($num));

答案 1 :(得分:1)

在此测试:https://eval.in/84659

$p = '/[\-+]?[0-9]+$/';
$num ='+1234567890';
echo preg_match( $p, $num)."   ";
$num1 ='+1234567890d';
echo preg_match( $p, $num1)."   ";

$num1 ='-1234567890';
echo preg_match( $p, $num1)."   ";

<强>输出:

1   0   1   

答案 2 :(得分:0)

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

^(?:(?:\+?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+))?$