2011-06-29 111 views
12

我有以下的javascript代碼:的Javascript正則表達式不工作

function checkLegalYear() { 
     var val = "02/2010"; 

     if (val != '') { 
      var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g"); 

      if (regEx.test(val)) { 
       //do something 
      } 
      else { 
       //do something 
      } 
     } 
    } 

不過,我正則表達式的測試總是返回我傳遞任何值(02/2010)假。我的代碼有問題嗎?我試過這個代碼在各種JavaScript編輯器在線,它工作正常。

回答

32

因爲你從一個字符串創建正則表達式,你必須仔細你的反斜線:

var regEx = new RegExp("^(0[1-9]|1[0-2])/\\d{4}$", "g"); 

還有這裏真的沒有理由不使用,而不是正則表達式語法:

var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g; 

編輯 —我還注意到有一個嵌入的「/」字符,如果您使用正則表達式語法,必須引用該字符。

+0

工程就像一個魅力,非常感謝;將在時間限制結束後接受。 – mint

+0

第二種解決方案是錯誤的,即/需要逃脫。 '... 0-2])\/\ d {4 ...' – epascarello

+0

已編輯,@epascarello,但是謝謝:-) – Pointy