Regex kiểm tra giờ 12 giờ (AM/PM)

Dùng /^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/ để kiểm tra xem toàn bộ chuỗi có phải là giờ hợp lệ theo định dạng 12 giờ (AM/PM) hay 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]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/
Mở trong Regex Tester
Đầu vàoKết quả
9:30 AM✓ Khớp
12:00pm✓ Khớp
07:15 PM✓ Khớp
13:00 PM✗ Không khớp
9:30✗ Không khớp
0:30 AM✗ Không khớp
9:30 A.M.✗ Không khớp

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

PhầnÝ nghĩa
(?:0?[1-9]|1[0-2])Giờ từ 1–12, có thể có số 0 ở đầu
:[0-5]\dDấu hai chấm và phút từ 00–59
?Khoảng trắng (tùy chọn)
[AaPp][Mm]AM hoặc PM, không phân biệt hoa thường

Ví dụ code

JavaScript

const re = /^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]', value))

PHP

preg_match('/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/', $value) === 1;

Ghi chú và giới hạn

Đồng hồ 12 giờ không có 0:00 hay 13:00, nên cả hai giá trị này đều bị từ chối.

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

Regex cho giờ 12 giờ AM/PM là gì?
/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/ — 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ụ đã kiểm thử, những ví dụ khớp là: 9:30 AM, 12:00pm, 07:15 PM. Các ví dụ 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.