我想要一个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。
当前回答
检查这个masterfull时间戳检测器正则表达式,我建立寻找用户指定的时间戳,它将拾取的例子包括,但绝对不限于;
8:30-9:40
09:40-09 : 50
09 : 40-09 : 50
09:40 - 09 : 50
08:00to05:00
08 : 00to05 : 00
08:00 to 05:00
8am-09pm
08h00 till 17h00
8pm-5am
08h00,21h00
06pm untill 9am
它还会拾取更多,只要times包含数字
其他回答
描述
小时:分钟:
强制am|pm或am|pm 强制引导零点05:01而不是5:1 从1点到12点 Hours不接受00为00:16 am 从00到59分
01:16 am✅ 01:16 am✅ 01:16❌(miss am|pm) 01:16 Am❌(Am必须全部小写或大写) 凌晨1:16❌(小时错过前导零) 00:16❌(无效时间值00)
正则表达式
匹配单个事件: ^ (0 (1 - 9) | 1 [0]): ([0 - 9] [0 - 5]) ((| p) m | | p m)美元
要匹配多个事件: 移除^ $ (0 (1 - 9) | 1 [0]): ([0 - 9] [0 - 5]) ((| p) m | | p m)
以上这些方法对我都没用。 最后我用了:
^([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](不允许是单个数字)
最好的是HH:MM,没有任何风险。
^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
试试下面的方法
^([0-2][0-3]:[0-5][0-9])|(0?[0-9]:[0-5][0-9])$
注意:我假设是javascript的正则表达式引擎。如果与此不同,请告诉我。
令人惊讶的是,我发现实际上所有这些都不能完全覆盖它,因为它们不适用于0:0的较短格式的午夜,一些也不适用于00:00,我使用并测试了以下内容:
^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$