PHP-验证电话号码


PHP - Validate phone number

我需要在PHP中验证电话号码,但下面的示例不起作用。

$phone = '(123) 458-1542';
if(preg_match("/^([0-9]{3})-[0-9]{3}-[0-9]{4}$/", $phone)) {
}

使用此正则表达式:

^'(*'+*[1-9]{0,3}')*-*[1-9]{0,3}[-. /]*'(*[2-9]'d{2}')*[-. /]*'d{3}[-. /]*'d{4} *e*x*t*'.* *'d{0,4}$

以下电话号码已经过测试:

1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 (234) 567-8901
1.234.567.8901
1/234/567/8901
12345678901
1-234-567-8901 ext. 1234
(+351) 282 433 5050

示例:http://www.regexr.com/3bp4b

添加一个空格并转义圆括号:

^'([0-9]{3}')[- ][0-9]{3}-[0-9]{4}$
 ^^        ^^^^^^

查看演示

我添加了一个字符类[- ],以防区号后面可能有空格或连字符。必须转义括号,才能将其视为文字符号,而不是分组构造

PHP演示:

$phone = '(123) 458-1542';
if(preg_match('~^'([0-9]{3}')[- ][0-9]{3}-[0-9]{4}$~', $phone)) {
    echo "Matched: $phone";
}