关于javascript:正则表达式验证美国电话号码?

Regular expression to validate US phone numbers?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
A comprehensive regex for phone number validation
Validate phone number with JavaScript

我正在尝试编写正则表达式来验证美国电话号码格式
(123)123-1234 - 是的
123-123-1234 - 是的

其他一切都无效。

我想出了类似的东西

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

但这验证了,
123)-123-1234
(123-123-1234

这是不对的。


匹配两者的最简单方法

1
^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$

1
^[0-9]{3}-[0-9]{3}-[0-9]{4}$

是使用交替((...|...)):将它们指定为两个主要分开的选项:

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

顺便说一下,当美国人把区号放在括号中时,我们实际上在那之后放了一个空格; 例如,我写(123) 123-1234,而不是(123)123-1234。 所以你可能想写:

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

(尽管最好明确说明您希望电话号码所在的格式。)