2014-11-06 83 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}$/; 

我認爲這會對你有用。 你的其他代碼將是相同的。