Я пытаюсь найти регулярное выражение, которое будет отклонять непоследовательные символы в предоставленном формате даты. Я хочу быть максимально гибким, и поэтому я решил, что моя строка формата даты может содержать ГГ или ГГГГ, ММ или МММ, ДД или DDD, чч мм и сс.
Некоторые из регулярных выражений Я уже разобрался - например, соответствие следующего покажет, что месяц представляет собой 3-символьный формат:
([M])\1{2}
Я в полном неведении относительно проверки того, что формат даты не содержит непоследовательных символов. Например, следующие форматы даты должны быть действительными:
YYYY-MM-DD hh:mm:ss
hh:mm:ss YYYY-MM-DD
DD/MMM/YYYYhh-mm
Но эти форматы должны быть отклонены
YYYY-MM-DD hh:mm:ss YYYY // year appears twice
hh:mm:ss YYYY-MM-DD hh // hour appears twice
DD/MMM/YYYYhh-mm m // m not consecutive with other m
В интересах будущего расширения я хочу разрешить использование непоследовательных специальных символов (/ -.:) et c и отклонение всех непоследовательных буквенных чисел c символов. Чувствительный к регистру, хотя - мм и ММ не совпадают (как указано выше)
Просто чтобы прояснить - я не пытаюсь проверить фактическую дату - я пытаюсь проверить только строку формата даты.