请问一个正则,匹配小时:分钟这个格式,例如:08:40

如题。我自己写的

/^[0-23]{2}:[0-59]{2}$/

能匹配到 01:40 02:40 03:40 但是匹配不到 04:40,我就奇怪了,请高手解惑,谢谢。

阅读 5.8k
4 个回答

嘿嘿,我已经搞定了,正确的正则如下:

^([0-1]{1}\d|2[0-3]):([0-5]\d)$
^(?:[01][0-9]|2[0-3]):(?:0[0-9]|[1-5][0-9])$

^(?:[01]\d|2[0-3]):[0-5]\d$

点击查看

[0-23]并不是你认为的那种匹配(0-23的数字) 正则中能使用-来表示区间的范围只有[0-9]

用这个正则试试 /^(20|21|22|23|[0-1]\d):[0-5]\d$/

正则是按字符匹配的而不是按数值。表达式[0-23]匹配的是一个0-2之间的字符或者一个字符3, 与[0-3]效果是一样的。[0-23]{2}只能匹配以下字符串

00010203101112122021222330313233

[0-59]同理。
正确的写法应该是/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题