有效的电话号码是10位数字,由短划线分隔,并且可能包含可选的1-6位数字分机,格式为“x 123456”或“x 123”。以下示例将是有效数字。
123-456-7890 123-456-7890 x 123 123-456-7890 x 1234
以下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})?/
这样的可选扩展程序时,它已损坏。
有谁知道什么是错的?
答案 0 :(得分:0)
尝试使用此表达式。 ( 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