web-dev-qa-db-fra.com

Expression régulière pour faire correspondre le format d'heure HH: MM

Je veux une expression rationnelle pour le temps correspondant au format HH: MM. Voici ce que j'ai et ça marche:

^[0-2][0-3]:[0-5][0-9]$

Cela correspond à tout de 00h00 à 23h59.

Cependant, je veux le changer pour que 00:00 et 1:00, etc. soient également appariés, ainsi que 00:00 et 01:30. Ie pour que le chiffre le plus à gauche soit facultatif, pour correspondre à HH: MM ainsi qu'à H: MM.

Des idées comment faire ce changement? J'ai besoin que cela fonctionne en javascript ainsi qu'en php.

117
Click Upvote

Votre expression régulière d'origine comporte des défauts: elle ne correspond pas à 04:00 par exemple.

Cela peut fonctionner mieux:

^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
288
Peter O.

Aucun de ce qui précède n'a fonctionné pour moi… .. À la fin, j'ai utilisé:

^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$ (js engine)

Logique:

Le premier nombre (heures) est soit: un nombre entre 0 et 19 -> [0-1]?[0-9] (permettant un numéro à un chiffre)
ou
un nombre compris entre 20 et 23 -> 2[0-3]

le deuxième nombre (minutes) est toujours un nombre compris entre 00 et 59 -> [0-5][0-9] (ne permettant pas un seul chiffre)

43
Tomer

Expressions régulières pour le temps

  • HH: Format 12 heures MM, facultatif menant à 0

    /^(0?[1-9]|1[0-2]):[0-5][0-9]\d$/
    
  • HH: format MM 12 heures, facultatif 0 devant, meridiems obligatoires (AM/PM)

    /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/
    
  • HH: MM 24 heures avec le premier 0

    /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
    
  • HH: Format 24 heures MM, facultatif menant à 0

    /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/
    
  • HH: MM: SS Format 24 heures avec le premier 0

    /(?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d)/
    

Référence et démonstration

16
Niket Pathak

Vous pouvez utiliser celui-ci 24H, les secondes sont optionnelles

^([0-1]?[0-9]|[2][0-3]):([0-5][0-9])(:[0-5][0-9])?$
6
Bahman Khalafi

Le mieux serait pour HH: MM sans prendre aucun risque.

^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
4
Nikhil Rawat

Étonnamment, j'ai trouvé que tout cela ne couvrait pas tout à fait, car ils ne fonctionnaient pas pour les formats plus courts minuit à 0: 0 et quelques-uns ne fonctionnaient pas non plus pour 00:00, j'ai utilisé et testé les éléments suivants:

^([0-9]|0[0-9]|1?[0-9]|2[0-3]):[0-5]?[0-9]$
2
user3229770

Vous pouvez utiliser cette expression régulière:

^(2[0-3]|[01]?[0-9]):([1-5]{1}[0-9])$

Si vous souhaitez exclure 00:00, vous pouvez utiliser cette expression

^(2[0-3]|[01]?[0-9]):(0[1-9]{1}|[1-5]{1}[0-9])$

La deuxième expression est la meilleure option car l'heure valide est 00:01 à 00:59 ou 0:01 à 23:59. Vous pouvez utiliser n'importe lequel de ces éléments selon vos besoins . Lien Regex101

2
Ved

Allumettes:

 2: 9 
 2:09 
 2:59 
 02: 9. 2

Utilise le:

^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9])$
1
Pedram Ahmadpour

La regex ci-dessous aidera à valider le format hh: mm

^([0-1][0-9]|2[0-3]):[0-5][0-9]$
0
TobiasDeVil

Comme vous avez demandé le bit le plus à gauche facultatif, j'ai fait le plus à gauche et le bit à droite le plus facultatif aussi, vérifiez-le 

^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]?$

Il correspond avec

0:0 
00:00
00:0 
0:00
23:59
01:00
00:59

Le lien en direct est disponible ici

0
gdmanandamohon

Déclarer

private static final String TIME24HOURS_PATTERN = "([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]";

public boolean validate(final String time) {
    pattern = Pattern.compile(TIME24HOURS_PATTERN);
    matcher = pattern.matcher(time);
    return matcher.matches();
}

Cette méthode renvoie "true" lorsque String correspond à l'expression régulière.

0
user3481495

Vous pouvez utiliser les expressions régulières suivantes: 

^[0-1][0-9]:[0-5][0-9]$|^[2][0-3]:[0-5][0-9]$|^[2][3]:[0][0]$
0
Basavaraj

Une légère modification de la contribution de Manish M Demblani ci-dessus Traite 4h du matin

^(([0-1]{0,1}[0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[1-9]|1[0-2])(:|\.)[0-5][0-9]( )?(AM|am|aM|Am|PM|pm|pM|Pm))|(([0]?[0-9]|1[0-9]|2[0-3])(:|\.)[0-5][0-9]))$

poignées: 4 heures 4 heures 4 heures 4 heures du matin 4 heures. du matin 4h30 etc..

0
Bob Light