У вашего исходного регулярного выражения есть недостатки: он не будет соответствовать 04:00, например.
04:00
Это может работать лучше:
^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$