有效的电话号码是10位数字,用破折号分隔,可以包含可选的1-6位扩展名,格式为" x 123456"或" x 123"。以下示例将是有效的数字。
123-456-7890123-456-7890 × 123
以下RegEx适用于10位数的电话号码:/[0-9]{3}-[0-9]{3}-[0-9]{4}/
,但是当我试图添加可选扩展如/[0-9]{3}-[0-9]{3}-[0-9]{4}( x [0-9]{1,6})?/
时,它坏了。
有谁知道怎么回事吗?
尝试使用这个表达式。( x 'd{1,6})?
表示括号中的内容为0或1。
我们还告诉它查看字符串的开始和结束以及使用^
和$
,而不仅仅是查看字符串中的任何地方。
/^'d{3}-'d{3}-'d{4}( x 'd{1,6})?$/
下面是一个用法示例:
<?php
$tests = array(
"123-456-789",
"123-456-7890",
"123-456-7890 x 123",
"123-456-7890 x 1234",
"123-456-7890 x 1234654654"
);
foreach($tests as $test){
if(preg_match("/^'d{3}-'d{3}-'d{4}( x 'd{1,6})?$/", $test)){
echo "<b>$test:</b> valid<br />";
}else{
echo "<b>$test:</b> invalid<br />";
}
}
输出如下:
123-456-789: invalid
123-456-7890: valid
123-456-7890 x 123: valid
123-456-7890 x 1234: valid
123-456-7890 x 1234654654: invalid