有没有办法缩短以下时间以找到 HH:MM:SS 格式的时间?
'^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$'
如果有的话,它应该更长,因为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
假设您不需要对值进行验证,而只需找到看起来像时间的东西,那么:
\d{1,2}:\d{2}:\d{2}
如果您正在搜索文本以查找您不想锚定的值^
,$
除非您的正则表达式风格在行首和行尾匹配,并且您的源数据在它们自己的行中有这些。