Как работает шаблон
| Часть | Значение |
|---|---|
^\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 falsePython
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">.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.