没有连字符或括号的美国电话号码的C#正则表达式?

时间:2011-02-22 19:36:54

标签: regex

我正在寻找能够验证以下内容的内容:

  • 13175551234
  • 3175551234

但不验证:

  • 1(317)531 1234
  • 1-317-555-1234

基本上它应该验证10或11位数的电话号码,可以选择以1开头,不包含空格,连字符或括号。区号不应是可选的。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

这实际上很简单:^1?\d{10}$

答案 1 :(得分:1)

对于简单的事情你可以试试这个:

"^1?[0-9]{10}$"

或略好一点:

"^1?[2-9][0-9]{9}$"

但在某些情况下,这仍然不正确。有关更好的方法,请参阅以下答案:

根据您使用的编程语言,可能需要使用\d而不是[0-9]。但请注意,在C#\d中可以匹配Unicode标准定义的任何数字。因此它可以包括中文数字和其他数字字符,这些字符是电话号码中的非法字符。但是[0-9]无处不在,即使在Unicode识别语言中也是如此。

答案 2 :(得分:0)

试试这个:

^1?[^0-1][0-9]{9}$

匹配

13155551212
3155551212

不符合

03155551212
10315551212
1055551212
11555551212