Regex kiểm tra ngày (DD/MM/YYYY)

Dùng /^(?:0[1-9]|[12]\d|3[01])\/(?:0[1-9]|1[0-2])\/\d{4}$/ để kiểm tra toàn bộ chuỗi có phải là ngày hợp lệ theo định dạng DD/MM/YYYY không. Mọi ví dụ bên dưới đều đã được kiểm thử với mẫu này, và bạn có thể mở chúng trong Regex Tester với sẵn dữ liệu mẫu.

Cập nhật

/^(?:0[1-9]|[12]\d|3[01])\/(?:0[1-9]|1[0-2])\/\d{4}$/
Mở trong Regex Tester
Đầu vàoKết quả
30/10/2026✓ Khớp
01/12/2000✓ Khớp
31/01/1999✓ Khớp
10/30/2026✗ Không khớp
1/5/2026✗ Không khớp
30-10-2026✗ Không khớp
32/01/2026✗ Không khớp

Mẫu hoạt động như thế nào

PhầnÝ nghĩa
(?:0[1-9]|[12]\d|3[01])Ngày 01–31 đứng trước (thứ tự dùng ở Anh, châu Âu, Ấn Độ và Úc)
\/Dấu gạch chéo
(?:0[1-9]|1[0-2])Tháng 01–12
\d{4}$Năm gồm bốn chữ số

Ví dụ mã

JavaScript

const re = /^(?:0[1-9]|[12]\d|3[01])\/(?:0[1-9]|1[0-2])\/\d{4}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:0[1-9]|[12]\d|3[01])/(?:0[1-9]|1[0-2])/\d{4}', value))

PHP

preg_match('/^(?:0[1-9]|[12]\d|3[01])\/(?:0[1-9]|1[0-2])\/\d{4}$/', $value) === 1;

Ghi chú và giới hạn

Thay \/ bằng [\/.-] để chấp nhận cả 30.10.2026 và 30-10-2026. Số ngày trong từng tháng chưa được kiểm tra.

Câu hỏi thường gặp

Regex cho ngày (DD/MM/YYYY) là gì?
/^(?:0[1-9]|[12]\d|3[01])\/(?:0[1-9]|1[0-2])\/\d{4}$/ — mẫu này khớp với toàn bộ chuỗi. Xem bảng phía trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã kiểm thử, những giá trị khớp là: 30/10/2026, 01/12/2000, 31/01/1999. Các giá trị còn lại không khớp.
Làm sao để kiểm thử regex này?
Nhấn “Mở trong Regex Tester” — mẫu, cờ và văn bản mẫu sẽ tự động được tải, và các kết quả khớp sẽ được tô sáng khi bạn chỉnh sửa.