我目前正在使用这个正则表达式
"/^([0-9\(\)\/\+ \-]*)$/",
这很好,但问题是我也在使用一个屏蔽脚本,它会自动生成这一行,
(___) ___-____
它弄乱了我的验证,什么正则表达式代码可以让我只验证来自使用的这种类型的输入
(999) 999-9999
并且在输入时也不接受用户的“空白”输入字段。任何长度都可以,只要它只接受我上面提到的这个输入。
我目前正在使用这个正则表达式
"/^([0-9\(\)\/\+ \-]*)$/",
这很好,但问题是我也在使用一个屏蔽脚本,它会自动生成这一行,
(___) ___-____
它弄乱了我的验证,什么正则表达式代码可以让我只验证来自使用的这种类型的输入
(999) 999-9999
并且在输入时也不接受用户的“空白”输入字段。任何长度都可以,只要它只接受我上面提到的这个输入。
这应该有效:
^\(\d{3}\)\s{0,1}\d{3}-\d{3}$
打破这个正则表达式:
\(\d{3}\)
只匹配括号内的三个数字。
\s{0,1}
仅匹配 0 或 1 个空格。
\d{3}-\d{3}
仅匹配三个数字,后跟“-”,然后是其他三个数字。
格式化和验证是两个非常不同的东西。如果你试图混合它们,你会失败。
话虽如此,在执行验证之前,您应该从字符串中删除所有格式字符,然后验证内容。
// remove everything that isn't a digit
var strippedNumber = value.replace(/\D/g, '');
if (strippedNumber.length === 10) {
// valid phone number
}
首先,在询问正则表达式时,您应该始终说出您正在使用哪种语言或工具,因为这会影响可用的功能以及需要用反斜杠引用哪些字符。我假设您根据问题的标签询问 JavaScript。
你说任何长度都可以。我认为这意味着每个连续数字序列可以包含从一个到无穷大的任意数量的数字。我假设只有一个空格和一个破折号。在此基础上,您的 RE 为:
/^\(\d+\) \d+-\d+$/
如果更可能的是,您想限制数字序列的长度,您可以这样说:
/^\(\d{3,4}\) \d{3}-\d{1,10}$/
(三位数或四位数,正好三位数,一到十位数)。
我省略了任何捕获括号(...)
,如果您要捕获整个字符串,这有点多余^(....)$
。
这是 JavaScript 正则表达式语法的简明摘要: http ://www.regextester.com/jssyntax.html