2011-06-29 4 views
12

J'ai le code javascript suivant:Javascript RegEx ne fonctionne pas

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 
      } 
     } 
    } 

Cependant, mon test REGEX retourne toujours false pour une valeur que je passe (02/2010). Y a-t-il quelque chose qui ne va pas dans mon code? J'ai essayé ce code sur divers éditeurs javascript en ligne et cela fonctionne très bien.

Répondre

32

Parce que vous créez votre expression régulière d'une chaîne, vous devez Doublez vos antislashs:

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

Il n'y a vraiment aucune raison ici de ne pas utiliser la syntaxe d'expression régulière à la place:

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

éditer — Je remarque aussi qu'il y a un caractère "/" incorporé, qui doit être cité si vous utilisez une syntaxe regex.

+0

Fonctionne comme un charme, merci beaucoup; acceptera lorsque la limite de temps sera écoulée. – mint

+0

La deuxième solution est fausse, que/doit être échappée. '... 0-2]) \/\ d {4 ...' – epascarello

+0

Déjà édité, @epascarello, mais merci :-) – Pointy