2015-06-10 4 views
5

Я использую этот RegEx ^(0[1-9]|1[0-2])/(19|2[0-1])\d{2}$ в .NET для проверки поля с месяцем и годом (12/2000).Преобразование RegEx для использования с Javascript

Я меняю все свои проверки RegEx на JavaScript, и я столкнулся с проблемой с этим из-за / в середине, с которым у меня возникают проблемы с экранированием.

Так на основе других ответов на SO я пробовал:

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

Однако валидация не удается даже с действительными данными.

+1

Как насчет простого 'вар п =/^ (0 [1-9] | 1 [0-2]) \/(19 | 2 [0-1]) \ d {2} $ /; 'который использует оператор regex' // '?? – sln

+0

@sln Разве это не _regex literal_? – Kroltan

+0

О, может быть. Разве он не компилирует 're' там как объект регулярного выражения? – sln

ответ

1

Удалить ^ первых и $ с конца шаблона регулярного выражения. И добавьте \ перед любым символом, который вы хотите сопоставить по шаблону. так картина выглядит так:

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

Вы можете проверить регулярное выражение из here

Смежные вопросы