2010-04-28 17 views
11
/^\d{1,2}[:][0-5][0-9]$/ 

es lo que tengo. esto limita los minutos a 00-59. Sin embargo, no limita las horas entre 0 y 12. Por similitud y uniformidad, me gustaría hacer esto solo con RegEx, si es posible.RegEx - Validación de tiempo ((h) h: mm)

Además, me gustaría que el primer dígito fuera opcional. es decir, se aceptan las 09:30 y las 9:30. Jugué con rangos, pero algo fuera de rango siempre es aceptable.

Respuesta

5
/^(10|11|12|[1-9]):[0-5][0-9]$/ 

No creo que tampoco desee tener 0:50 como tiempo válido.

13

Las cajas 0 - 9 y 10 - 12 deben tratarse por separado. (. Las dos reglas se pueden combinar con |)

/^(?:0?\d|1[012]):[0-5]\d$/ 

Aquí

  • (?:…) es un grupo no capturar
  • x|y significa fósforo o bien patrón
  • 0?\d partidos 0 - 9 o 00 - 09
  • 1[012] coincide con 10 - 12.
+0

¿Qué tal un reloj de 24 horas? –

17

Suponiendo que está trabajando en un tiempo de 12 horas, 0 no es una hora válida y también debe excluirse (como lo señaló Jon). Aquí es una solución básica:

/^(0?[1-9]|1[012]):[0-5][0-9]$/ 

Una vez coincidencias de expresiones regulares de 24 horas que funciona de manera similar:

/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/ 
+2

Gracias por gran regEx! –

1

Gracias !!! Yo uso este código Javascript ahora:?

function Check_arrival(time) { //Assuming you are working in 12 hour time, 0 is not a valid var patt = new RegExp("^(0?[1-9]|1[012]):[0-5][0-9]$"); var res = patt.test(time); return res; }

res = true | false

+0

bueno que le da a la clase javascript RegExp una manera de hacerlo ya que el OP está etiquetado como javascript. sigue gustando la respuesta @Trey Hunner dio para su consideración de 24 horas. –

0

Esto es perfecto:^0 (? [0-9] [0-2]): [0- 5] [0-9] $

Nota: Sólo 12 horas reloj

para tiempos como: 0: 01- 12:59

o

00:01 - 12:59

+0

Disculpa, esta es la perfecta :) (([0-9] [0-2]?) | ([0] [0-9])): [0-5] [0-9] $ – Byorn

+0

00: 00 - 12:59 o 0:00 - 12:59 – Byorn