我想要一个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。
当前回答
你可以24小时使用,秒是可选的
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[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
...
你可以24小时使用,秒是可选的
^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
您原来的正则表达式有缺陷:例如,它不能匹配04:00。
这可能会更好:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$
你可以使用这个正则表达式:
^(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链接
我的是:
^ (1? [0-9] [0, 3] | 2) : [0 to 5] [0-9] $
这个要短得多
用几个例子进行了测试
匹配:
00:00 7:43 07:43 19:00 18:23
并且不匹配任何无效的实例,如25:76等…