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

è quello che ho. questo limita i minuti a 00-59. Tuttavia, non limita le ore a tra 0 e 12. Per somiglianza e uniformità, vorrei farlo solo con RegEx se possibile.RegEx - Tempo di convalida ((h) h: mm)

Inoltre, vorrei che la prima cifra fosse opzionale. 09:30 accettato e 9:30. Ho giocato con gli intervalli, ma qualcosa fuori dal range è sempre accettabile.

risposta

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

Non credo che si voglia 0:50 come orario valido.

13

I casi 0 - 9 e 10 - 12 devono essere trattati separatamente. (. Le due regole possono essere combinati con |)

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

Qui

  • (?:…) è un gruppo non-catturante
  • x|y significa partita o modello
  • 0?\d partite 0-9 o 00 - 09
  • 1[012] partite 10 - 12.
+0

Che dire di un orologio 24 ore? –

17

Supponendo che si lavori in 12 ore, 0 non è un'ora valida e dovrebbe essere escluso (come indicato da Jon). Qui è una soluzione di base:

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

Una volta regex matcher di 24 ore che funziona in modo simile:

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

Grazie per il grande regEx! –

1

Grazie !!! Io uso questo codice Javascript ora:?

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

bene che tu dia il modo di classe RegExp javascript per fare questo come l'OP è etichettato come javascript. ancora come la risposta @Trey Hunner ha dato per la sua considerazione di 24 ore. –

0

Questo è perfetto:^0 (? [0-9] [0-2]): [0- 5] [0-9] $

Nota: 12 Hr Clock Solo

Per tempi come: 0: 01- 12:59

o

00:01 - 12:59

+0

Spiacente, questo è perfetto :) (([0-9] [0-2]?) | ([0] [0-9])): [0-5] [0-9] $ – Byorn

+0

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