почему это регулярное выражение «^ (0 [1-9] | 1 [0-9] | 2 [0-9] | 3 [01]) / (0 [1-9] | 1 [012]) / (19 [ 0-9] {2} | 20 [0-1] [0-7]) $ ”не выполняется в такие даты, как 16/06/2008, 21/02/2008 ..?

1

я пытался сопоставить даты, начиная с 1900 по 2017 год в формате dd/mm/yyyy, используя это

^(0[1-9]|1[0-9]|2[0-9]|3[01])/(0[1-9]|1[012])/(19[0-9]{2}|20[0-1][0-7])$

но я наблюдаю, что это регулярное выражение не подходит для дат, таких как 16/06/2008 и 21/02/2008.
Чтобы убедиться, что все части этого регулярного выражения работают или нет, я попробовал все три части, такие как ^(0[1-9]|1[0-9]|2[0-9]|3[01])$, ^(0[1-9]|1[012])$ и ^(19[0-9]{2}|20[0-1][0-7])$ на разные множества дней месяцев и лет, но я обнаружил, что они работают нормально, но когда я запускал его вместе, у меня был такой же неожиданный результат на дату, как 16/06/2008.

Кроме того, я хочу сообщить вам, что я использую это регулярное выражение в javascript:

var patt = new RegExp("^(0[1-9]|1[0-9]|2[0-9]|3[01])/(0[1-9]|1[012])/(19[0-9]{2}|20[0-1][0-7])$");
var res = patt.exec(datestring);

для таких дат, как 16/06/2008 res, оценивается как null.

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

  • 1
    Скорее всего, вы хотите изменить (19[0-9]{2}|20[0-1][0-7]) на (19[0-9]{2}|200[0-9]|201[0-7])
  • 0
    Я думаю, что было бы лучше не использовать регулярное выражение, но JS для этой проверки.
Показать ещё 4 комментария
Теги:

2 ответа

0
Лучший ответ

Вместе с

20[0-1][0-7]

не соответствует 2008 году (8 не попадает в диапазон [0-7]), вы также можете избежать слэшей в регулярном выражении, используя обратную косую черту, как показано ниже

^(0[1-9]|1[0-9]|2[0-9]|3[01])\/(0[1-9]|1[012])\/(19[0-9]{2}|20[0-1][0-9])$
9

Поскольку 2008 не соответствует 20 [0-1] [0-7]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню