0

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

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

我的问题是这允许单括号。

这将允许传递一个左括号而没有像这样的右括号:(111-121-1212.

有没有人有一个正则表达式脚本可以匹配美国电话号码并考虑括号?

4

3 回答 3

2

使用替代品 ( |):

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

结果 re 看起来像:

var numberRegex = /^(?:\(([0-9]{3})\)|([0-9]{3}))[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/
于 2012-07-09T16:26:56.357 回答
0

RegExLib 可能有你的解决方案

于 2012-07-09T16:27:27.170 回答
-1

我建议不要这样做。验证电话号码的唯一方法是尝试拨打电话,看看谁接听。电话号码可能在语法上看起来是正确的,但在语义上仍然可能是错误的(即假电话号码)。

您能做的最好的事情就是警告用户电话号码“看起来无效”,但无论如何都接受任何输入。

于 2012-07-09T16:28:00.040 回答