Почему эти регулярные выражения JavaScript выдают синтаксические ошибки? - PullRequest
4 голосов
/ 08 марта 2009

Я пытаюсь проверить текстовую строку как дату перед обработкой, однако оба из регулярных выражений, которые я пробовал, выдают синтаксические ошибки, и я не понимаю, почему. Из того, что я могу сказать, в этом нет ничего плохого. Это строки:

 var datePattern1 = new RegExp( (0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d );

и

var datePattern2 = new RegExp( [0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2} );

Ценю любую помощь.

Ответы [ 3 ]

12 голосов
/ 08 марта 2009

Вам не хватает кавычек вокруг ваших выражений:

var datePattern1 = new RegExp( "(0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d" );
var datePattern2 = new RegExp( "[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}" );
9 голосов
/ 08 марта 2009

Либо передайте строку конструктору RegExp, как упоминал Дарин, либо используйте синтаксис RegExp «/ … /»:

var datePattern1 = /(0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])[-](19|20)\d\d/;
var datePattern2 = /[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}/;
3 голосов
/ 08 марта 2009

Конструктор Regexp () ожидает строку, поэтому вам нужно заключить в кавычки свое регулярное выражение:

var datePattern2 = new RegExp('[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}');

При использовании двойных кавычек, следите за выходом обратной косой черты в регулярном выражении. Кроме того, вы можете использовать синтаксис Perl:

var datePattern2 = /[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...