2013-02-08 10 views
12

Richiesto informazioni sulla possibile espressione Regex per il formato dell'ora di 24 ore in HTML 5 (HH: MM).espressioni regolari di 24 ore per HTML 5

se possibile, gentilmente dire l'espressione regolare che può essere utilizzato nell'attributo Modello di HTML 5

Il tempo dovrebbe essere in formato 24 ore (HH non più di 23).

Cordiali saluti,

risposta

14

credo che questo è un approccio possibile:

<input type="text" pattern="([01]?[0-9]|2[0-3]):[0-5][0-9]" id="24h"/> 
<input type="text" pattern="([01]?[0-9]{1}|2[0-3]{1}):[0-5]{1}[0-9]{1}" id="24h"/> 

http://www.mkyong.com/regular-expressions/how-to-validate-time-in-24-hours-format-with-regular-expression/

([01]?[0-9]|2[0-3]):[0-5][0-9] 

Partenza questo jsfiddle: example

+0

Grazie .. l'ho visto prima ma ma non ha funzionato .. probabilmente mancava una staffa .. :). Grazie però .. –

+1

@AbdulAli controlla i miei commenti fuori –

+0

Bene come puoi vedere funziona. –

11

Ecco il codice:

<input type="text" pattern="[0-2]{1}[0-9]{1}:[0-5]{1}[0-9]{1}" /> 

lo fa consentire i valori ora non validi: 24,25,26,27,28,29, se si vuole essere più corretta si può fare in questo modo:

<input type="text" pattern="([0-1]{1}[0-9]{1}|20|21|22|23):[0-5]{1}[0-9]{1}" /> 
+0

Se parliamo di tempo, di sicuro voglio il modo corretto, grazie, ha funzionato come un fascino! – Daniel

1

Un po 'più breve regex :

(?:[01]|2(?![4-9])){1}\d{1}:[0-5]{1}\d{1} 

Quindi, in completa: "? (:)"

<input type="text" pattern="(?:[01]|2(?![4-9])){1}\d{1}:[0-5]{1}\d{1}" /> 

nel primo gruppo non-cattura() abbiamo MATC h esattamente una cifra, 0, 1 o 2 non seguita da 4-9 (lookahead negativo "(?!)"). Quindi io abbino un'altra cifra, dato che potrebbe essere una qualsiasi tra 0 e 9, possiamo andare con la combinazione \ d. Quindi abbiniamo il separatore ":". Quindi una cifra tra 0-5 e un'altra tra 0-9 (di nuovo con "\ d"). Se per qualche motivo devi abbinare anche 24 ore (a volte lo fai), quindi regola solo il lookahead negativo, e. g. "(?! [5-9])".

+0

Puoi renderlo ancora più breve eliminando il '{1}', che non ha alcun effetto. –