Ничто из этого не помогло мне. В конце я использовал:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
Логика:
Первое число (часы): либо число от 0 до 19 -> [0-1]?[0-9]
(разрешение одной цифры число) или число от 20 до 23 -> 2[0-3]
, второе число (минуты) всегда является числом от 00 до 59 -> [0-5][0-9]
(не допуская ни одной цифры)