Solución:
Su expresión regular original tiene fallas: no coincidiría 04:00
por ejemplo.
Esto puede funcionar mejor:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$
Expresiones regulares para el tiempo
-
HH: formato MM de 12 horas, 0 inicial opcional
/^(0?[1-9]|1[0-2]):[0-5][0-9]$/
-
HH: formato MM de 12 horas, 0 inicial opcional, meridianos obligatorios (AM / PM)
/((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
-
HH: MM 24 horas con 0 a la izquierda
/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
-
HH: formato MM de 24 horas, 0 inicial opcional
/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
-
HH: MM: SS formato de 24 horas con 0 a la izquierda
/(?:[01]d|2[0-3]):(?:[0-5]d):(?:[0-5]d)/
Referencia y demostración
Ninguno de los anteriores funcionó para mí. Al final usé:
^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)
Lógica:
El primer número (horas) es: un número entre 0 y 19 -> [0-1]?[0-9]
(permitiendo un número de un solo dígito)
o
un número entre 20 – 23 -> 2[0-3]
el segundo número (minutos) es siempre un número entre 00 y 59 -> [0-5][0-9]
(no permite un solo dígito)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)