特定电话号码安排的正则表达式

时间:2012-10-14 17:40:59

标签: javascript regex verification phone-number

我目前正在使用此正则表达式

"/^([0-9\(\)\/\+ \-]*)$/",

这很好,但问题是我也在使用屏蔽脚本, 自动生成此行,

(___) ___-____

它弄乱了我的验证,正则表达式代码可以让我只验证使用中的这类输入

(999) 999-9999

并且在输入时也不接受来自用户的“空白”输入字段。任何长度都可以,只要它只接受我上面提到的这些输入。

3 个答案:

答案 0 :(得分:2)

这应该有效:

^\(\d{3}\)\s{0,1}\d{3}-\d{3}$

打破这个正则表达式:

\(\d{3}\)仅匹配括号内的三个数字。

\s{0,1}仅匹配0或1个空格。

\d{3}-\d{3}只匹配三个数字,后跟' - ',然后是其他三个数字。

答案 1 :(得分:0)

格式化和验证是两个截然不同的事情。如果你试图混合它们,你就会失败。

话虽如此,在执行验证之前,您应该从字符串中删除所有格式化字符,然后验证内容。

// remove everything that isn't a digit
var strippedNumber = value.replace(/\D/g, '');

if (strippedNumber.length === 10) {
    // valid phone number
}

答案 2 :(得分:0)

首先,在询问正则表达式时,您应该始终说明您正在使用哪种语言或工具,因为这会影响哪些功能可用以及需要使用反斜杠引用哪些字符。我假设您根据问题的标签询问JavaScript。

你说任何长度都没问题。我将这意味着每个连续数字序列可以包含从1到无穷大的任意数量的数字。我假设只有一个空格和一个短划线。在此基础上,您的RE是:

/^\(\d+\) \d+-\d+$/

如果您更希望限制数字序列的长度,您可以说:

/^\(\d{3,4}\) \d{3}-\d{1,10}$/

(三位或四位,正好三位数,一到十位数字)。

我省略了任何捕获括号(...),如果你捕获整个字符串^(....)$,这有点多余。

以下是JavaScript正则表达式语法的简明摘要: http://www.regextester.com/jssyntax.html