Regex for 12-Hour Time with AM/PM
Regex Pattern
^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$12-hour clock with AM/PM
Quick Answer
The regex pattern for 12-hour time with am/pm is `^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$`. 12-hour clock with AM/PM. This works in JavaScript, Python, Ruby, PHP, Java, and most regex engines that support PCRE syntax.
Test Examples
| Input | Result |
|---|---|
| 12:00 PM | ✓ Matches |
| 9:30 AM | ✓ Matches |
| 11:59 pm | ✓ Matches |
| 1:00AM | ✓ Matches |
| 13:00 PM | ✗ No match |
| 12:60 AM | ✗ No match |
| 9:30 | ✗ No match |
| 9-30 AM | ✗ No match |
Code Examples
javascript
const regex = /^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$/; const isValid = regex.test(value);
python
import re
pattern = r'^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$'
if re.match(pattern, value):
print("valid")ruby
pattern = /^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$/ if value =~ pattern puts "valid" end
php
if (preg_match('/^(0?[1-9]|1[0-2]):([0-5]\d)\s?(AM|PM|am|pm)$/', $value)) {
echo "valid";
}java
String pattern = "^(0?[1-9]|1[0-2]):([0-5]\\d)\\s?(AM|PM|am|pm)$"; boolean isValid = value.matches(pattern);
Frequently Asked Questions
Related Regex Patterns
Date YYYY-MM-DD
ISO 8601 date format
Date DD/MM/YYYY
European date format with slashes
24-Hour Time
24-hour clock time in HH:MM format
Email Address
Validates a standard email address format
Email (RFC 5322 Compliant)
RFC 5322 compliant email validation with label length limits
URL (HTTP/HTTPS)
Validates HTTP and HTTPS URLs