2014-11-06 87 views
0

我想从用户获取输入为888-999-6666..i.e。 3个数字然后是' - ',然后是3个数字,然后是' - ',最后是4个数字。 我在我的JavaScript中使用以下正则表达式。Java脚本数字格式不正常的正则表达式

 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

var num1 =/^ [0-9] {3} + - [0-9] {3} + - [0-9] {3} $ /;'最后一个符号类附近的错字?你是不是指“{4}”? – 2014-11-06 10:44:06

+1

@SergeyLagutin在'{}之后'''就像一个被php支持的所有格量词,但js不会 – 2014-11-06 10:50:55

+0

@AvinashRaj谢谢解释! – 2014-11-06 11:01:36

回答

1

删除紧接重复量词{}后面的+符号。并且最后用[0-9]{4}代替[0-9]{3},以便它在最后的-符号之后准确地允许4个数字。

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

DEMO

你也可以写[0-9]\d

0

你的正则表达式应该是:

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

。在你的正则表达式的额外+后数范围。

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。所以我删除它,它的工作。

0
var num1=/^\d{3}-\d{3}-\d{4}$/; 

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