Регулярное выражение: сопоставление дат с нулем перед месяцем и данными - PullRequest
0 голосов
/ 18 мая 2019

В настоящее время я работаю над заданием hw, связанным с Regex.

HW Цель:

Соответствует любой дате в форме: мм / дд / гггг, где мм и дд могут быть 1 или 2-значными числами, но гггг всегда содержит 4 цифры, и слеш требуется,Поле mm должно соответствовать действительному месяцу (от 1 до 12), а поле dd - действительной дате (от 1 до 31).Первые две цифры в поле «гггг» должны быть либо «19», либо «20».

Пример: совпадения 12/01/1922 и 2/4/2000, но не 12-01-1922 и 12/ 01/22

Это то, что у меня сейчас есть:

(0[1-9]|1[12])/(0[1-9]|[12][0-9]|3[1])/((19|20)\d\d)

Мне нужно регулярное выражение, чтобы соответствовать, когда нет 0 перед днем ​​и месяцем.В настоящее время он совпадает, если я добавлю 0 к своим тестовым данным.

Я попытался добавить еще один |когда нет 1 или 0 впереди, но это не сработало

1 Ответ

1 голос
/ 18 мая 2019

Просто сделайте эти нули необязательными, добавив ? после них:

(0?[1-9]|1[12])\/(0?[1-9]|[12][0-9]|3[1])\/((19|20)\d\d)

это похоже на работу.

https://regex101.com/r/E05ahM/1/

Вы также можете посетить это для получения дополнительной информации:

https://www.regular -expressions.info / dates.html

...