正则表达式匹配美国电话模式

时间:2012-07-09 16:24:28

标签: javascript regex

我想验证美国的电话号码,这是我到目前为止所拥有的:

var numberRegex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/

我的问题是这允许单支架。

这将允许传递一个左括号而不是像这样的结束括号:(111-121-1212

是否有人使用正则表达式脚本来匹配美国电话号码和帐号括号?

3 个答案:

答案 0 :(得分:2)

使用替代品(|):

(?:
 \(([0-9]{3})\)
  |
 ([0-9]{3})
)

结果重看如下:

var numberRegex = /^(?:\(([0-9]{3})\)|([0-9]{3}))[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/

答案 1 :(得分:0)

答案 2 :(得分:-1)

我会反对这一点。验证电话号码的唯一方法是尝试并调用它,看看谁接听。电话号码看起来可能在语法上是正确的,但它仍然可能在语义上错误(即假电话号码)。

您可以做的最好的事情是向用户发出警告,指出电话号码“看起来不合法”,但仍接受任何输入。