缩短HH:MM:SS的正则表达式

时间:2012-04-25 00:50:02

标签: regex

有没有办法缩短以下内容,以HH格式找到时间:MM:SS?

'^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$'

2 个答案:

答案 0 :(得分:2)

如果有的话,它应该更长,因为69:69:69暂时没有意义。

([01]\d|2[0-3]):([0-5]\d|60):([0-5]\d|60)
allow 00-23     00-59 and 60 00-59 and 60
                ~~~~~~~~~~~~~~~~~~~~~~~~~
                60 is useful for supporting leap seconds

如果你真的想要你的例子,但是更短,你可以这样做:

[0-6]\d(:[0-6]\d){2}
     ~~          ~~~
      |          exactly two repetitions of preceding () block
      Matches digits in many regex implementations

答案 1 :(得分:1)

假设您不需要对值进行验证,只是找到看起来像时间的东西,那么:

\d{1,2}:\d{2}:\d{2}

如果您正在搜索文本以查找值,那么除非您的正则表达式在开头和结尾处具有匹配,否则您不希望在^$处锚定,并且您的源数据有各自的行。