我目前正在使用此正则表达式
"/^([0-9\(\)\/\+ \-]*)$/",
这很好,但问题是我也在使用屏蔽脚本, 自动生成此行,
(___) ___-____
它弄乱了我的验证,正则表达式代码可以让我只验证使用中的这类输入
(999) 999-9999
并且在输入时也不接受来自用户的“空白”输入字段。任何长度都可以,只要它只接受我上面提到的这些输入。
答案 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