我需要在PHP中验证电话号码,但下面的示例不起作用。
$phone = '(123) 458-1542';
if(preg_match("/^([0-9]{3})-[0-9]{3}-[0-9]{4}$/", $phone)) {
}
答案 0 :(得分:3)
添加空格并转义圆括号:
^\([0-9]{3}\)[- ][0-9]{3}-[0-9]{4}$
^^ ^^^^^^
请参阅demo
我添加了character class [- ]
,以防 空格或区号后面的连字符。必须对括号进行转义才能将其视为文字符号,而不是grouping construct。
$phone = '(123) 458-1542';
if(preg_match('~^\([0-9]{3}\)[- ][0-9]{3}-[0-9]{4}$~', $phone)) {
echo "Matched: $phone";
}
答案 1 :(得分:3)
使用此正则表达式:
^\(*\+*[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