Rexact
Cheatsheet

Regex heure sur 24 heures (HH:MM:SS)

La norme HTML (WHATWG) définit la « chaîne d'heure valide » : deux chiffres d'heure de 00 à 23, deux points, deux chiffres de minute de 00 à 59, puis facultativement deux points, deux chiffres de seconde de 00 à 59 et, après les secondes, un point et 1 à 3 chiffres de fraction. Les secondes 60 et 61 sont exclues. Les tentatives relues divergent : validator.js et jQuery Validation acceptent l'heure sans zéro initial (« 9:05 »), jQuery Validation accepte même « 7:30:15 » mais pas « 14:30:15.5 », et le motif d'ajv-formats exige les secondes et un décalage facultatif sans borner les valeurs (« 99:99:99 » passe, le contrôle est fait ensuite dans le code). Voici un motif conforme à la norme HTML, comparé à ces tentatives.

/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\.[0-9]{1,3})?)?$/
passe 28/28 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9](?:\\.[0-9]{1,3})?)?$", "");
re.test(input);

Limites

  • Valide seulement la FORME 24 h. « 24:00 » (admis par ISO 8601 pour la fin d'une journée) et les secondes intercalaires (« 23:59:60 ») sont refusés, comme dans la norme HTML.
  • Ni fuseau horaire (« Z », « +02:00 ») ni date : pour un instant complet, voir la fiche timestamp-iso8601. Le zéro initial est obligatoire.
  • Une heure ne dit rien de son existence locale : certaines heures n'existent pas (passage à l'heure d'été) ou existent deux fois (retour à l'heure d'hiver).

Pages liées