正则表达式匹配美国电话号码,有或没有区号

时间:2013-12-08 12:21:29

标签: c# regex phone-number

我的问题被标记为重复,所以我做了一些编辑。正如我所说,当我搜索时,我能够找到许多类似的问题,但没有一个是我需要的。我没有验证一个字符串,其中唯一存在的是电话号码(这似乎是大多数其他问题正在解决的问题)。相反,我试图从更大的文本块中提取所有电话号码(然后由用户手动检查)。我遇到的问题是我的正则表达式是匹配邮政编码和扩展名(例如:45202-4787),我不知道如何改变我的正则表达式以避免这种情况。如果这确实是一个重复的问题,那么我为无法找到处理我的问题的现有问题而道歉。

我的电话号码格式规格如下:

1)-.和空格作为分隔符(以及任意组合)

2)区号可能带括号或不带括号

一些例子:

(xxx) xxx-xxxx
(xxx) xxx.xxxx
xxx-xxx-xxxx
xxx xxx-xxxx
xxxxxxxxxxx

我在评论中使用了Anirudh的正则表达式:

(\(?\d{3}\)?)?[. -]?\d{3}[. -]?\d{4}

同样,我的问题是这个正则表达式将邮政编码与扩展名匹配(例如:45202-4787)。

我会感激任何帮助,因为我对使用正则表达式非常陌生。谢谢!

1 个答案:

答案 0 :(得分:0)

这应该这样做:

 ^(\([0-9]{3}\)|[0-9]{3})[ -\.]?[0-9]{3}[ -\.]?[0-9]{4}$