Регулярное выражение для даты (YYYY-MM-DD)

Используйте /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/, чтобы проверить, что вся строка является корректной датой в формате (YYYY-MM-DD). Каждый пример ниже проверен по этому шаблону, и его можно открыть в Regex Tester с уже загруженными образцами.

Обновлено

/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/
Открыть в Regex Tester
ВводРезультат
2026-10-30✓ Совпадение
1999-01-01✓ Совпадение
2024-02-29✓ Совпадение
2026-13-01✗ Нет совпадения
2026-1-5✗ Нет совпадения
2026/10/30✗ Нет совпадения
26-10-30✗ Нет совпадения
2026-00-10✗ Нет совпадения

Как работает шаблон

ЧастьЗначение
^\d{4}Четырёхзначный год
(?:0[1-9]|1[0-2])Месяц 01–12
(?:0[1-9]|[12]\d|3[01])День 01–31
-Литеральные дефисы между частями

Примеры кода

JavaScript

const re = /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])', value))

PHP

preg_match('/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/', $value) === 1;

Примечания и ограничения

Регулярное выражение может проверить формат, но не календарь: 2026-02-30 проходит проверку. После совпадения подтвердите дату с помощью библиотеки для работы с датами или new Date(value) и сравните части. Это формат ISO 8601, который используется в <input type="date">.

Часто задаваемые вопросы

Какое регулярное выражение для даты (YYYY-MM-DD)?
/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ — оно проверяет всю строку целиком. Что делает каждая часть, см. таблицу выше.
Какие примеры совпадают?
Из проверенных примеров совпадают: 2026-10-30, 1999-01-01, 2024-02-29. Остальные не совпадают.
Как протестировать это регулярное выражение?
Нажмите «Открыть в Regex Tester» — шаблон, флаги и образцы текста загрузятся автоматически, а совпадения будут подсвечиваться по мере редактирования.