Подтвердить что ты не робот

Шаблон регулярного выражения для HH: MM: временная строка SS

Я хочу проанализировать строку hh:mm:ss. Простой - ([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d), который ожидает строку 2:3:24 или 02:03:24.

Я хочу сделать еще один шаг и пройти проверку даже в таких случаях, как

  • если вы вводите только 56, это должен быть проход, так как 56 можно считать 56 сек [SS]
  • если вы введете 2: 3 или 02:03 или 02: 3 или 2:03, он должен пройти. 2 минуты и 3 секунды [ММ: СС]
  • Если вы вводите пропуск 20:30:12 с 20 ч, 30 минут и 12 секунд [ЧЧ: ММ: СС]
  • Если вы введете 78:12, не пропустите 78 минут, это неправильно....

В принципе, если найдено ":", рассмотрите число до ":" как MM и число после ":" как SS , Если найдено два ":", считайте HH: MM: SS

Я придумал этот шаблон.

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

Кажется, он работает нормально. Я хотел знать любое другое более простое регулярное выражение, которое может выполнить эту работу.

4b9b3361

Ответ 1

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

Объяснение:

^                   # 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

Ответ 2

@Tim Pietzcker покрывает требование OP для анализатора HH: MM: SS, где SS является обязательным, т.е.

  • HH: MM: SS
  • ММ: СС
  • СС

Если вы позволите мне немного отклониться от требования OP и рассмотрите случай, когда HH является обязательным, то есть

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

Регулярное выражение, которое я придумал, было:

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

Позвольте сломать его:

  • ([0-1]?\d|2[0-3]) - соответствует часам
  • (?::([0-5]?\d))? - необязательно соответствует минутам
  • (?::([0-5]?\d))? - необязательно соответствует секундам