Como o padrão funciona
| Parte | Significado |
|---|---|
^\d{4} | Ano com quatro dígitos |
(?:0[1-9]|1[0-2]) | Mês 01–12 |
(?:0[1-9]|[12]\d|3[01]) | Dia 01–31 |
- | Hífens literais entre as partes |
Exemplos de código
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;
Observações e limitações
Uma regex pode verificar o formato, mas não o calendário: 2026-02-30 passa na validação. Após a correspondência, confirme com uma biblioteca de datas ou new Date(value) e compare as partes. Este é o formato ISO 8601 usado por <input type="date">.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.