Регулярное выражение для проверки метки времени

Мне нужно регулярное выражение для проверки метки времени формата, с помощью JavaScript:

YYYY/MM/DD HH:MI:SS

Я пытался готовить некоторых, но кажусь, что моим regex навыкам не удается покрыть то или другое.

Дайте мне ссылку или способ сделать это.

P.S.: Я упоминаю regex, только как предложение. Я использую JavaScript и приветствую любую альтернативу.

6
задан Nietzche-jou 29 June 2009 в 11:15
поделиться

7 ответов

Я бы порекомендовал использовать Datejs для этого. Самостоятельный синтаксический анализ даты не является необходимым, и регулярного выражения недостаточно для проверки метки времени. С помощью datejs вы можете проанализировать строку в дате, и вы получите null, если она недействительна:

Date.parse("2009/06/29 13:30:10", "yyyy/MM/dd HH:mm:ss");
17
ответ дан 8 December 2019 в 02:08
поделиться

Использование

(\d\d)?\d\d\/\d\d?/\d\d? \d\d?:\d\d:\d\d

может проверить синтаксис, но, как указывает балфа, это не делает дату действительной.

1
ответ дан 8 December 2019 в 02:08
поделиться
function validateTimestamp(timestamp) {

    if (!/\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}/.test(timestamp)) {
        return false;
    }

    var split = timestamp.split(/[^\d]+/);

    var year = parseFloat(split[0]);
    var month = parseFloat(split[1]);
    var day = parseFloat(split[2]);

    var hour = parseFloat(split[3]);
    var minute = parseFloat(split[4]);
    var second = parseFloat(split[5]);

    return hour < 25 && minute < 61 && second < 61 && month < 13 && day < 32;

}
2
ответ дан 8 December 2019 в 02:08
поделиться

Regular-Expressions.info - хороший источник информации о RegEx, а также хороший учебник .

1
ответ дан 8 December 2019 в 02:08
поделиться

стиль perl: [12] \ d {3} / [01] \ d / [0-3] \ d [0-2] \ d (? :: [0-5 ] \ d) {2}

1
ответ дан 8 December 2019 в 02:08
поделиться

Если вы просто хотите проверить синтаксис, вот регулярное выражение POSIX:

[0-9]{1,4}/[0-9]{1,2}/[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}

Но если вы хотите проверить семантику, я бы обработал строку, используя выбранный вами язык, есть слишком много случаев, которые нельзя охватить с помощью регулярных выражений (например, високосные годы / секунды, летнее время и т. д.)

6
ответ дан 8 December 2019 в 02:08
поделиться

Вам следует подумать о том, чтобы не делать этого с регулярными выражениями, а просто пропустить строку через DateTime с правильной строкой формата. Таким образом, вы можете убедиться, что это действительно действительная временная метка, а не что-то похожее на нее.

6
ответ дан 8 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: