Regex pour date (AAAA-MM-JJ)

Utilisez /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ pour vérifier qu'une chaîne entière est une date valide au format (AAAA-MM-JJ). Chaque exemple ci-dessous est testé avec ce motif, et vous pouvez l'ouvrir dans le testeur de regex avec les exemples préchargés.

Mis à jour le

/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/
Ouvrir dans le testeur de regex
EntréeRésultat
2026-10-30✓ Correspondance
1999-01-01✓ Correspondance
2024-02-29✓ Correspondance
2026-13-01✗ Aucune correspondance
2026-1-5✗ Aucune correspondance
2026/10/30✗ Aucune correspondance
26-10-30✗ Aucune correspondance
2026-00-10✗ Aucune correspondance

Fonctionnement du motif

PartieSignification
^\d{4}Année sur quatre chiffres
(?:0[1-9]|1[0-2])Mois 01–12
(?:0[1-9]|[12]\d|3[01])Jour 01–31
-Tirets littéraux entre les parties

Exemples de code

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;

Notes et limites

Une regex peut vérifier le format, mais pas le calendrier : 2026-02-30 passe le test. Après la correspondance, confirmez avec une bibliothèque de dates ou new Date(value) et comparez les parties. Il s'agit du format ISO 8601 utilisé par <input type="date">.

Questions fréquentes

Quelle est la regex pour date (AAAA-MM-JJ) ?
/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ — elle correspond à la chaîne entière. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : 2026-10-30, 1999-01-01, 2024-02-29. Les autres ne correspondent pas.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans le testeur de regex » : le motif, les drapeaux et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez.