Regex pattern for HH:MM:SS time string

前端 未结 2 1644
后悔当初
后悔当初 2020-11-27 13:27

I want to parse a hh:mm:ss string. A simple one is ([0-1]?\\d|2[0-3]):([0-5]?\\d):([0-5]?\\d) which expects 2:3:24 or 02:03:24<

相关标签:
2条回答
  • 2020-11-27 14:03

    @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
    0 讨论(0)
  • 2020-11-27 14:09
    ^(?:(?:([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
    
    0 讨论(0)
提交回复
热议问题