我想要一个regexp来匹配HH:MM格式的时间。以下是我所拥有的,而且它很有效:
^[0-2][0-3]:[0-5][0-9]$
它匹配从00:00到23:59的所有内容。
但是,我想改变它,所以0:00和1:00等也匹配,以及00:00和01:30。也就是说,让最左边的数字是可选的,以匹配HH:MM和H:MM。
有什么想法可以改变吗?我需要这个工作在javascript以及php。
我想要一个regexp来匹配HH:MM格式的时间。以下是我所拥有的,而且它很有效:
^[0-2][0-3]:[0-5][0-9]$
它匹配从00:00到23:59的所有内容。
但是,我想改变它,所以0:00和1:00等也匹配,以及00:00和01:30。也就是说,让最左边的数字是可选的,以匹配HH:MM和H:MM。
有什么想法可以改变吗?我需要这个工作在javascript以及php。
当前回答
时间的正则表达式
HH:MM 12小时格式,前导0可选 / ^(0 ?(1 - 9) | 1[0]):[0 - 9][0 - 5] /美元 HH:MM 12小时格式,可选前导0,必选经脉(AM/PM) (0 - 2) /((1 | 0 ?[1 - 9]):([0 - 9][0 - 5]) ?([前不久](Mm))) / HH:MM 24小时,前导0 / ^(0[0 - 9][0 - 9] | | 1 2(0 - 3)):[0 - 9][0 - 5] /美元 HH:MM 24小时格式,前导0可选 / ^([0 - 9][0 - 9][0 - 9] | 1 | 0 | 2(0 - 3)):[0 - 9][0 - 5] /美元 HH:MM:SS 24小时格式,前导0 / (?: [01] \ d | 2 (0 - 3)): (?: (0 - 5) \ d): (?: (0 - 5) \ d) /
参考及示范
其他回答
令人惊讶的是,我发现实际上所有这些都不能完全覆盖它,因为它们不适用于0:0的较短格式的午夜,一些也不适用于00:00,我使用并测试了以下内容:
^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$
要验证24小时时间,请使用:
^([0-1]?[0-9]|2?[0-3]|[0-9])[:\-\/]([0-5][0-9]|[0-9])$
接受:
22:10
2:10
2/1
...
但不接受:
25:12
12:61
...
你可以使用这个正则表达式:
^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$
如果要排除00:00,可以使用这个表达式
^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$
第二个表达式是更好的选择,因为有效时间是00:01到00:59或0:01到23:59。您可以根据需要使用其中任何一种。 Regex101链接
你可以24小时使用,秒是可选的
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
以上这些方法对我都没用。 最后我用了:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
逻辑:
第一个数字(小时)是: 0到19之间的数字——> [0-1]?[0-9](允许个位数) 或 20 - 23 -> 2[0-3]
第二个数字(分钟)总是在00到59之间的数字——>[0-5][0-9](不允许是单个数字)