我希望得到用户的输入为888-999-6666..i.e。 3个数字然后是' - '然后是3个数字然后再次' - ',最后是4个数字。 我在JavaScript中使用以下正则表达式。
var num1=/^[0-9]{3}+-[0-9]{3}+-[0-9]{3}$/;
if(!(form.num.value.match(num1)))
{
alert("Number cannot be left empty");
return false;
}
但它不起作用。
如果我使用var num1=/^[0-9]+-[0-9]+-[0-9]$/;
,那么它至少需要两个' - ',但对数字没有限制。
我如何才能获得RE作为我的要求?为什么上面的代码不起作用?
答案 0 :(得分:1)
删除重复量词+
之后的{}
符号。最后使用[0-9]{3}
替换[0-9]{4}
,以便在最后-
个符号后面恰好包含4位数。
var num1=/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/;
您也可以将[0-9]
写为\d
。
答案 1 :(得分:0)
你的正则表达式应该是:
var num1=/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/;
正则表达式中的数字范围后有一个额外的+
。
答案 2 :(得分:0)
以下示例中的regex.check问题。
var num='888-999-6668';
var num1=/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/;
if(!(num.match(num1)))
{
alert("Number cannot be left empty");
}else{
alert("Match");
}
在你的例子中,在{3}之后有额外的+ symbole,这会产生问题。所以我删除它并且它有效。
答案 3 :(得分:0)
var num1=/^\d{3}-\d{3}-\d{4}$/;
我认为这对你有用。 其余代码将是相同的。