我有以下正则表达式,应该执行24小时时间格式验证,我正在https://rubular.com中进行尝试
/^[0-23]{2}:[0-59]{2}:[0-59]{2}$/
但是以下时间即使看起来正确也无法匹配
02:06:00
04:05:00
为什么会这样呢?
在字符类中,应该指出允许的字符范围(与示例中要匹配的数字相反)。在几分钟和几秒钟内,这是相对简单的-以下表达式
[0-5][0-9]
...将匹配从“ 00”到“ 59”的任何数字字符串。
但是对于小时,您需要两个单独的表达式:
[01][0-9]|2[0-3]
...一个将“ 00”匹配到“ 19”,另一个将“ 20”匹配到“ 23”。由于使用了替代(|
字符),因此需要对它们进行分组,这又增加了一点语法(?:...)
。最后,我们只是添加锚点^
以及$
字符串的开头和结尾,您已经拥有了它们所在的位置。
^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
如果愿意,可以在regex101上查看此解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句