Regex für Datum (YYYY-MM-DD)

Verwende /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/, um zu prüfen, ob ein ganzer String ein gültiges Datum im Format (YYYY-MM-DD) ist. Jedes Beispiel unten wurde gegen das Muster getestet. Du kannst es mit vorgeladenen Beispielen im Regex-Tester öffnen.

Aktualisiert am

/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/
Im Regex-Tester öffnen
EingabeErgebnis
2026-10-30✓ Treffer
1999-01-01✓ Treffer
2024-02-29✓ Treffer
2026-13-01✗ Kein Treffer
2026-1-5✗ Kein Treffer
2026/10/30✗ Kein Treffer
26-10-30✗ Kein Treffer
2026-00-10✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
^\d{4}Vierstellige Jahreszahl
(?:0[1-9]|1[0-2])Monat 01–12
(?:0[1-9]|[12]\d|3[01])Tag 01–31
-Wörtliche Bindestriche zwischen den Teilen

Codebeispiele

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;

Hinweise und Einschränkungen

Ein Regex kann das Format prüfen, aber nicht den Kalender: 2026-02-30 besteht die Prüfung. Bestätige nach dem Matchen mit einer Datumsbibliothek oder new Date(value) und vergleiche die Teile. Dies ist das ISO-8601-Format, das von <input type="date"> verwendet wird.

Häufige Fragen

Wie lautet der Regex für Datum (YYYY-MM-DD)?
/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ — er passt auf den gesamten String. In der Tabelle oben siehst du, was jeder Teil macht.
Welche Beispiele passen?
Von den getesteten Beispielen passen diese: 2026-10-30, 1999-01-01, 2024-02-29. Die anderen passen nicht.
Wie teste ich diesen Regex?
Klicke auf „Im Regex-Tester öffnen“. Muster, Flags und Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten markiert.