Member 13138388 Ответов: 1

Регулярное выражение для проверки даты, включая февраль в високосные годы.


мне нужно регулярное выражение, которое должно быть в состоянии проверить февраль в високосные годы, то есть я не должен быть в состоянии отправить страницу, если пользователь дает 28 февраля 2016 года для високосного года.


Спасибо

Что я уже пробовал:

Это то, что я пробовал


^(([1-9])|([0][1-9])|([1-2][0-9])|([3][0-1]))\-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\-\d{4}$

1 Ответов

Рейтинг:
4

Patrice T

Цитата:
мне нужно регулярное выражение, которое должно быть в состоянии проверить февраль в високосные годы, то есть я не должен быть в состоянии отправить страницу, если пользователь дает 28 февраля 2016 года для високосного года.

В этом случае вам также нужно проверить месяцы с 31 днем и отклонить "31 июня". В последний раз, когда я проверял, "28 февраля" было правильным каждый год, високосный или нет.
Даже если это возможно, то, что вы хотите сделать с регулярным выражением, - это своего рода злоупотребление.

Я бы использовал регулярное выражение, чтобы проверить формат даты примерно '99 aaa 9999', а затем кусок JS-кода, как только я узнаю, что формат правильный.

Проблема с проверкой глубоких деталей с помощью регулярного выражения заключается в том, что регулярное выражение будет вырождаться по мере того, как вы вводите эти детали. Проблема в том, что вы не можете включить исчисление в регулярное выражение, и поэтому вам приходится описывать все возможности, которые не вписываются в общий случай.
Как только вы узнаете, что входные данные соответствуют общему формату даты, небольшой "простой" фрагмент JS-кода может проверить, является ли год високосным или нет (год % 4 == 0)

Всего несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
Это показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


CPallini

5.

Patrice T

Спасибо

Matt T Heffron

Правильный инструмент для работы.
5

Patrice T

Спасибо