Сколько ложных совпадений вы позволите?Божо уже предложил шаблон
\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}
Но это соответствует следующим сомнительным случаям: 0000-1-1 00:00
(нет нуля года), 2011-0-1 00:00
(нет нуля месяца),2011-13-1 00:00
(13-го месяца нет), 2011-1-32 00:00
(32-го дня месяца) 2011-12-31 24:00
(не более одной прыжковой секунды) и 2011-12-31 23:61
(не более одного прыжкового периода).
Вы хотите проанализировать дату / время, которые почти , но не совсем, в формате ISO-8601 .Если вы можете, , пожалуйста, используйте этот международный стандартный формат.
В одной из моих программ (сценарий оболочки с использованием grep
) я использовал следующее регулярное выражение:
^20[0-9][0-9]-[01][0-9]-[0-3][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]UTC$
Мне пришлось иметь дело с T
и UTC
, я интересовался только датами в этом столетии и анализировал их с точностью до секунд.Я вижу, что я не ограничивал значения часов и минут, возможно, потому, что традиционные преобразования C / C ++ могут их обрабатывать.
Полагаю, вы могли бы использовать что-то вроде следующего:
\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-6]\d