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

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

Cập nhật

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

Cách hoạt động của mẫu

PhầnÝ nghĩa
(?:0[1-9]|1[0-2])Tháng 01–12 đứng đầu (theo thứ tự kiểu Mỹ)
\/Dấu gạch chéo (được escape cho literal JavaScript)
(?:0[1-9]|[12]\d|3[01])Ngày 01–31
\d{4}$Năm bốn chữ số ở cuối

Ví dụ mã

JavaScript

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

Python

import re

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

PHP

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

Ghi chú và giới hạn

Để chấp nhận cả tháng và ngày một chữ số, hãy đổi 0[1-9] thành 0?[1-9] ở cả hai chỗ. Mẫu này không kiểm tra số ngày trong từng tháng, vì vậy bạn nên xác thực lại chính ngày đó sau khi nhận kết quả.

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

Regex cho ngày (MM/DD/YYYY) là gì?
/^(?:0[1-9]|1[0-2])\/(?:0[1-9]|[12]\d|3[01])\/\d{4}$/ — mẫu này khớp với toàn bộ chuỗi. Xem bảng ở trên để biết mỗi phần làm gì.
Những ví dụ nào khớp?
Trong các ví dụ đã thử, những ví dụ khớp là: 10/30/2026, 01/01/2000, 12/31/1999. Các ví dụ còn lại không khớp.
Làm sao để 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.