Regex pour l'heure (12 h avec AM/PM)

Utilisez /^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/ pour vérifier qu'une chaîne entière correspond à une heure valide au format 12 h (avec AM/PM). Chaque exemple ci-dessous a été testé avec ce motif, et vous pouvez l'ouvrir dans Regex Tester avec les exemples préchargés.

Mis à jour le

/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/
Ouvrir dans Regex Tester
SaisieRésultat
9:30 AM✓ Correspondance
12:00pm✓ Correspondance
07:15 PM✓ Correspondance
13:00 PM✗ Aucune correspondance
9:30✗ Aucune correspondance
0:30 AM✗ Aucune correspondance
9:30 A.M.✗ Aucune correspondance

Fonctionnement du motif

PartieSignification
(?:0?[1-9]|1[0-2])Heures de 1 à 12, avec un zéro initial facultatif
:[0-5]\dDeux-points et minutes de 00 à 59
?Espace facultatif
[AaPp][Mm]AM ou PM, quelle que soit la casse

Exemples de code

JavaScript

const re = /^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]', value))

PHP

preg_match('/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/', $value) === 1;

Remarques et limites

Il n'existe ni 0:00 ni 13:00 sur une horloge à 12 heures, donc ces deux valeurs sont rejetées.

Questions fréquentes

Quelle est la regex pour l'heure (12 h avec AM/PM) ?
/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/ — elle valide la chaîne entière. Consultez le tableau ci-dessus pour le rôle de chaque partie.
Quels exemples correspondent ?
Parmi les exemples testés, ceux-ci correspondent : 9:30 AM, 12:00pm, 07:15 PM. Les autres ne correspondent pas.
Comment tester cette regex ?
Cliquez sur « Ouvrir dans Regex Tester » : le motif, les indicateurs et le texte d'exemple se chargent automatiquement, et les correspondances s'affichent en surbrillance pendant que vous modifiez.