2011-06-29 20 views
12

Tengo el siguiente código javascript:Javascript expresiones regulares que no trabaja

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

Sin embargo, mi prueba de expresiones regulares siempre devuelve falsa para cualquier valor Paso (02/2010). ¿Hay algo mal en mi código? He intentado este código en varios editores de JavaScript en línea y funciona bien.

Respuesta

32

Debido a que va a crear su expresión regular de una cadena, hay que hacer doble-up sus barras invertidas:

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

No hay realmente ninguna razón aquí no utilizar sintaxis de expresiones regulares en su lugar:

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

edit — También observo que hay un carácter incrustado "/", que debe ser citado si usa la sintaxis regex.

+0

Funciona como un amuleto, muchas gracias; aceptará cuando el límite de tiempo se acabe. – mint

+0

La segunda solución es incorrecta, que/necesita ser escapada. '... 0-2]) \/\ d {4 ...' – epascarello

+0

Ya editado, @epascarello, pero gracias :-) – Pointy

Cuestiones relacionadas