Regex pattern for HH:MM:SS time string

耗尽温柔 提交于 2019-11-26 18:41:54
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$

Explanation:

^                   # Start of string
(?:                 # Try to match...
 (?:                #  Try to match...
  ([01]?\d|2[0-3]): #   HH:
 )?                 #  (optionally).
 ([0-5]?\d):        #  MM: (required)
)?                  # (entire group optional, so either HH:MM:, MM: or nothing)
([0-5]?\d)          # SS (required)
$                   # End of string

@Tim Pietzcker covers the OP's requirement for a HH:MM:SS parser where SS was mandatory, i.e.

  • HH:MM:SS
  • MM:SS
  • SS

If you permit me to deviate from the OP's requirement for a bit, and consider a case where HH is mandatory, i.e.

  • HH
  • HH:MM
  • HH:MM:SS

The regex I came up with was:

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

Let's break it down:

  • ([0-1]?\d|2[0-3]) - matches for hours
  • (?::([0-5]?\d))? - optionally matches for minutes
  • (?::([0-5]?\d))? - optionally matches for seconds
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!