Regex for Time AM/PM Format
Regex Pattern
^(0?[1-9]|1[0-2]):([0-5]\d)(?::([0-5]\d))?\s?(AM|PM|am|pm)$12-hour time with optional seconds and AM/PM
Quick Answer
The regex pattern for time am/pm format is `^(0?[1-9]|1[0-2]):([0-5]\d)(?::([0-5]\d))?\s?(AM|PM|am|pm)$`. 12-hour time with optional seconds and AM/PM. This works in JavaScript, Python, Ruby, PHP, Java, and most regex engines that support PCRE syntax.
Test Examples
| Input | Result |
|---|---|
| 2:30 PM | ✓ Matches |
| 12:00:00 AM | ✓ Matches |
| 9:15 am | ✓ Matches |
| 11:59:59 PM | ✓ Matches |
| 13:00 PM | ✗ No match |
| 2:30 | ✗ No match |
| 0:30 AM | ✗ No match |
Code Examples
javascript
const regex = /^(0?[1-9]|1[0-2]):([0-5]\d)(?::([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)(?::([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)(?::([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)(?::([0-5]\d))?\s?(AM|PM|am|pm)$/', $value)) {
echo "valid";
}java
String pattern = "^(0?[1-9]|1[0-2]):([0-5]\\d)(?::([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
12-Hour Time with AM/PM
12-hour clock with AM/PM
Date MM/DD/YYYY
US date format with slashes (MM/DD/YYYY)
ISO 8601 Full DateTime
Full ISO 8601 datetime with timezone (YYYY-MM-DDThh:mm:ssZ)