forked from validatorjs/validator.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathisTime.js
More file actions
25 lines (22 loc) · 793 Bytes
/
isTime.js
File metadata and controls
25 lines (22 loc) · 793 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import merge from './util/merge';
const default_time_options = {
hourFormat: 'hour24',
mode: 'default',
};
const formats = {
hour24: {
default: /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,
withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,
withOptionalSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/,
},
hour12: {
default: /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,
withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,
withOptionalSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/,
},
};
export default function isTime(input, options) {
options = merge(options, default_time_options);
if (typeof input !== 'string') return false;
return formats[options.hourFormat][options.mode].test(input);
}