Javascript数字格式的正则表达式不起作用

时间:2014-11-06 10:42:35

标签: javascript regex

我希望得到用户的输入为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作为我的要求?为什么上面的代码不起作用?

4 个答案:

答案 0 :(得分:1)

删除重复量词+之后的{}符号。最后使用[0-9]{3}替换[0-9]{4},以便在最后-个符号后面恰好包含4位数。

var num1=/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/;

DEMO

您也可以将[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}$/;

我认为这对你有用。 其余代码将是相同的。