2011-06-29 13 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)はfalseを返します。私のコードに何か間違っていますか?私は様々なJavaScriptエディタでこのコードを試してみましたが、うまくいきます。

答えて

32

あなたは文字列から正規表現を作成しているので、あなたはダブルアップするためにあなたのバックスラッシュを持っている:

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

ではなく、正規表現構文を使用するには、ここは本当にない理由はありませんん
var regEx = new RegExp("^(0[1-9]|1[0-2])/\\d{4}$", "g"); 

編集 —また、正規表現の構文を使用すると引用符で囲まなければならない "/"文字が埋め込まれていることに気付きました。

+0

魅力のように機能します、ありがとうございます。制限時間が過ぎると受け入れます。 – mint

+0

2番目の解決策は間違っています。つまり、/エスケープする必要があります。 '... 0-2])\/\ d {4 ...' – epascarello

+0

既に編集されていますが、@epascarello、ありがとう:-) – Pointy

関連する問題