web-dev-qa-db-fra.com

Regex heure sur 24 heures pour HTML 5

Voulait s'informer sur l'expression possible Regex pour le format horaire 24 heures en HTML 5 (HH: MM). 

Si possible, merci de préciser la regex pouvant être utilisée dans l'attribut Pattern de HTML 5  

L'heure devrait être au format 24 heures (HH pas plus de 23).

Sincères amitiés,

12
Abdul Ali

Je pense que c'est une approche possible:

<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]

Découvrez ce jsfiddle: exemple

17
radu florescu

Voici le code:

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

cela autorise les valeurs d'heures invalides: 24,25,26,27,28,29, si vous voulez être vraiment correct, vous pouvez le faire de cette façon:

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

Un regex un peu plus court:

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

Donc en complète:

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

Dans le premier groupe non capturant ("(? :)"), nous correspondons exactement à un chiffre, 0, 1 ou 2 non suivi de 4-9 (affichage négatif "(?!)"). Ensuite, je correspond à un chiffre supplémentaire, puisqu'il peut s'agir de 0 à 9, nous pouvons utiliser le raccourci\d. Ensuite, on fait correspondre le séparateur ":". Ensuite, un chiffre entre 0-5 et un chiffre supplémentaire entre 0 et 9 (toujours avec "\ d") . Si, pour une raison quelconque, vous devez également faire correspondre 24 heures (alors que vous le fassiez), ajustez simplement la perspective négative, e. g. "(?! [5-9])".

1
SKS