正则表达式验证美国电话号码?

时间:2012-03-19 19:00:51

标签: javascript regex

  

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

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

其他所有事情都无效。

我想出了像

这样的东西
 ^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$

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

不对。

1 个答案:

答案 0 :(得分:54)

匹配两者的最简单方法

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

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

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

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

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

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

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