isValidTimeHHMM
Validates whether a string is in the "HH:mm" 24-hour time format.
1/**
2 * Validates whether a string is in the "HH:mm" 24-hour time format.
3 *
4 * Valid range:
5 * - Hours: 00–23
6 * - Minutes: 00–59
7 *
8 * @param str - The string to validate.
9 * @returns True if valid, false otherwise.
10 */
11export function isValidTimeHHMM(str: string): boolean {
12 return /^([01]\d|2[0-3]):[0-5]\d$/.test(str);
13}
Precise Format Matching
Ensures strict adherence to the 24-hour "HH:mm" format, catching subtle errors like
24:00
or12:60
.Lightweight and Fast
Uses a compact regular expression with minimal computational cost, making it ideal for high-frequency validations.
Avoids Date Object Overhead
Validates the time format without relying on Date parsing, which can introduce cross-browser quirks or overhead.
Clear Readability
The regular expression is concise and self-explanatory for developers familiar with time formatting.
Tests | Examples
1test('valid HH:mm times', () => {
2 expect(isValidTimeHHMM('00:00')).toBe(true);
3 expect(isValidTimeHHMM('09:30')).toBe(true);
4 expect(isValidTimeHHMM('23:59')).toBe(true);
5 expect(isValidTimeHHMM('15:01')).toBe(true);
6});
7
8test('invalid HH:mm times - bad format', () => {
9 expect(isValidTimeHHMM('0:00')).toBe(false);
10 expect(isValidTimeHHMM('24:00')).toBe(false);
11 expect(isValidTimeHHMM('12:60')).toBe(false);
12 expect(isValidTimeHHMM('1234')).toBe(false);
13 expect(isValidTimeHHMM('12:5')).toBe(false);
14});
15
16test('invalid HH:mm times - non-numeric', () => {
17 expect(isValidTimeHHMM('aa:bb')).toBe(false);
18 expect(isValidTimeHHMM('12:mm')).toBe(false);
19 expect(isValidTimeHHMM('HH:MM')).toBe(false);
20});
Common Use Cases
Time Input Fields
Validate user-entered time values in web forms, particularly for scheduling or event creation.
Backend API Validation
Enforce correct time formatting in incoming data payloads, especially in systems without native time types.
CSV or Text Data Import
Validate and sanitize time fields during bulk import operations from external data sources.
Configuration UIs
Accept and verify time inputs in settings panels or automated job schedulers.