2015-06-10 5 views
5

Attualmente sto utilizzando questa RegEx ^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$ in .NET per convalidare un campo con Mese e Anno (12/2000).Conversione RegEx da utilizzare con Javascript

Sto cambiando tutte le convalide RegEx in JavaScript e sto riscontrando un problema con questo a causa di / nel mezzo che ho problemi di escape.

Quindi, sulla base di altre risposte in modo da ho provato:

RegExp.quote = function (str) { 
     return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&"); 
    }; 
    var reDOB = '^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$' 

      var re = new RegExp(RegExp.quote(reDOB)); 
      if (!re.test(args.Value)) { 
       args.IsValid = false; 
       return; 
      } 

Tuttavia, convalide fallisce anche con dati validi.

+1

Come su un semplice 'var re =/^ (0 [1-9] | 1 [0-2]) \/(19 | 2 [0-1]) \ d {2} $ /; 'che usa l'operatore regex' // '?? – sln

+0

@sln Non è un _regex letterale? – Kroltan

+0

Oh, forse. Non compila 're' lì come un oggetto regex? – sln

risposta

1

Rimuovere ^ del primo e $ dalla fine del modello regex. E aggiungi \ prima di qualsiasi carattere che desideri abbinare per modello. così modello è simile a questo:

(0[1-9]|1[0-2])\/(19|2[0-1])\d{2}

è possibile verificare la regex da here