我想要一个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。


当前回答

您原来的正则表达式有缺陷:例如,它不能匹配04:00。

这可能会更好:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$

其他回答

正如你问的最左位可选,我也做了最左位和最右位可选,看看

^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]?$

它与

0:0 
00:00
00:0 
0:00
23:59
01:00
00:59

现场链接在这里

令人惊讶的是,我发现实际上所有这些都不能完全覆盖它,因为它们不适用于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
...

下面的正则表达式将有助于验证hh:mm格式

^([0-1][0-9]|2[0-3]):[0-5][0-9]$

上面的答案对我都没用,下面这个有用。

"[0-9]{2}:[0-9]{2}"