Regex untuk tanggal (YYYY-MM-DD)

Gunakan /^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ untuk memastikan seluruh string adalah tanggal (YYYY-MM-DD) yang valid. Setiap contoh di bawah sudah diuji terhadap pola ini, dan kamu bisa membukanya di Regex Tester dengan contoh yang sudah terisi.

Diperbarui

/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/
Buka di Regex Tester
InputHasil
2026-10-30✓ Cocok
1999-01-01✓ Cocok
2024-02-29✓ Cocok
2026-13-01✗ Tidak cocok
2026-1-5✗ Tidak cocok
2026/10/30✗ Tidak cocok
26-10-30✗ Tidak cocok
2026-00-10✗ Tidak cocok

Cara kerja pola

BagianArti
^\d{4}Tahun empat digit
(?:0[1-9]|1[0-2])Bulan 01–12
(?:0[1-9]|[12]\d|3[01])Tanggal 01–31
-Tanda hubung literal di antara bagian

Contoh kode

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;

Catatan dan batasan

Regex hanya bisa memeriksa format, bukan kalender: 2026-02-30 tetap lolos. Setelah cocok, pastikan dengan library tanggal atau new Date(value) lalu bandingkan bagiannya. Ini adalah format ISO 8601 yang dipakai oleh <input type="date">.

Pertanyaan yang sering diajukan

Apa regex untuk tanggal (YYYY-MM-DD)?
/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/ — pola ini mencocokkan seluruh string. Lihat tabel di atas untuk fungsi setiap bagiannya.
Contoh mana yang cocok?
Dari contoh yang diuji, yang cocok adalah: 2026-10-30, 1999-01-01, 2024-02-29. Yang lain tidak cocok.
Bagaimana cara menguji regex ini?
Klik “Buka di Regex Tester” — pola, flag, dan teks contoh akan termuat otomatis, dan kecocokan akan tersorot saat kamu mengedit.