我在使用此功能匹配电话号码时遇到了一些麻烦
return (bool)preg_match( '/^[\-+]?[0-9]+$/', $num);
在删除括号( )
后,上面的函数始终返回false,并且使用+1234567890
-
我缺少什么
答案 0 :(得分:2)
你可能在字符串中有一些空格。尝试使用trim
return (bool)preg_match( '/^[\-+]?[0-9]+$/', trim($num));
答案 1 :(得分:1)
$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+))?$