正则表达式可选空白电话号码

时间:2012-10-01 19:02:14

标签: c# regex

  

可能重复:
  A comprehensive regex for phone number validation

我非常接近我需要的完整正则表达式。但是我似乎无法获得可选的空白区域。

正则表达式

^(\(?\d{3}\)?\-?\d{3}\-?\d{4})$

要求 - 只有这四个

111-111-1111 - 作品

(111)111-1111 - 作品

(111)111-111 - 不捕获

1111111111 - 作品

如何在括号后添加可选空格?

4 个答案:

答案 0 :(得分:4)

^(\(?\d{3}\)*\s?\-?\d{3}\-?\d{4})$

* \ s表示0或1个空格字符。

修改 实际上,我更喜欢这个版本,因为它允许破折号或空格,但不是两者。还有,?表示0或1,*表示0或更多:

^(\(?\d{3}\)?[\s,\-]?\d{3}\-?\d{4})$

答案 1 :(得分:4)

\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b3334445555333.444.5555333-444-5555333 444 5555(333) 444 5555及其所有组合相匹配。{/ p>

更新

你正在遇到REGEX的限制,因此丑陋的解决方案确实是:

(\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}|\d{10})

Example

答案 2 :(得分:1)

有时最好匹配三个完整表达式中的一个:

^(\d{11}|(\d{3}-){2}\d4|\(\d{3}\) ?\d\d\d-\d\d\d)$

答案 3 :(得分:0)

我不会根据格式处理正则表达式,而是处理输入的数字。这个问题显示了您应该采用的答案:

A comprehensive regex for phone number validation