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.
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]$
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)
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)/
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])?$
Le mieux serait pour HH: MM sans prendre aucun risque.
^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
É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]$
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
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])$
La regex ci-dessous aidera à valider le format hh: mm
^([0-1][0-9]|2[0-3]):[0-5][0-9]$
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
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.
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]$
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..