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


当前回答

你可以24小时使用,秒是可选的

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

其他回答

试试下面的方法

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

注意:我假设是javascript的正则表达式引擎。如果与此不同,请告诉我。

你可以使用以下正则表达式:

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

我的是:

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

这个要短得多

用几个例子进行了测试

匹配:

00:00 7:43 07:43 19:00 18:23

并且不匹配任何无效的实例,如25:76等…

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

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

最好的是HH:MM,没有任何风险。

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