正则表达式匹配以下10位数字是什么:
0108889999 //can contain nothing except 10 digits
011 8889999 //can contain a whitespace at that place
012 888 9999 //can contain two whitespaces like that
013-8889999 // can contain one dash
014-888-9999 // can contain two dashes
答案 0 :(得分:5)
如果你只是在寻找正则表达式,请试试这个:
^(\d{3}(\s|\-)?){2}\d{4}$
稍微清楚一点:
^ # start at the beginning of the line (or input)
(
\d{3} # find three digits
(
\s # followed by a space
| # OR
\- # a hyphen
)? # neither of which might actually be there
){2} # do this twice,
\d{4} # then find four more digits
$ # finish at the end of the line (or input)
编辑:哎呀!以上是正确的,但它也太宽松了。它会匹配01088899996
(一个太多的字符)之类的东西,因为它喜欢它们中的第一个(或最后一个)10个。现在它更加严格(我添加了^
和$
)。
答案 1 :(得分:0)
我假设你想要一个正则表达式匹配任何这些例子:
if (preg_match('/(\d{3})[ \-]?(\d{3})[ \-]?(\d{4})/', $value, $matches)) {
$number = $matches[1] . $matches[2] . $matches[3];
}
答案 2 :(得分:0)
preg_match('/\d{3}[\s-]?\d{3}[\s-]?\d{4}/', $string);
0108889999 // true
011 8889999 // true
012 888 9999 // true
013-8889999 // true
014-888-9999 // true
匹配特定部分:
preg_match('/(\d{3})[\s-]?(\d{3})[\s-]?(\d{4}/)', $string, $matches);
echo $matches[1]; // first 3 numbers
echo $matches[2]; // next 3 numbers
echo $matches[3]; // next 4 numbers
答案 3 :(得分:0)
您可以尝试这种模式。它满足您的要求。
[0-9] {3} [ - \ s]的[0-9] {3}?[ - \ S] [0-9] {4}
此外,您可以通过附加[\ s。,] + :(电话号码以空格,点或逗号结尾)为最后一个字符添加更多条件
[0-9] {3} [ - \ S] [0-9] {3} [ - \ S] [0-9] {4} [\ S,] +