Como o padrão funciona
| Parte | Significado |
|---|---|
(?:0?[1-9]|1[0-2]) | Horas de 1 a 12, com zero à esquerda opcional |
:[0-5]\d | Dois-pontos e minutos de 00 a 59 |
? | Espaço opcional |
[AaPp][Mm] | AM ou PM em qualquer caixa (maiúscula ou minúscula) |
Exemplos de código
JavaScript
const re = /^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/;
re.test(value); // true or falsePython
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;
Observações e limitações
Não existe 0:00 nem 13:00 em um relógio de 12 horas, então ambos são rejeitados.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.
Perguntas frequentes
Qual é a regex para hora (12 horas com AM/PM)?
/^(?:0?[1-9]|1[0-2]):[0-5]\d ?[AaPp][Mm]$/ — ela corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: 9:30 AM, 12:00pm, 07:15 PM. Os outros não.
Como testo essa regex?
Clique em “Abrir no Testador de Regex” — o padrão, as flags e o texto de exemplo carregam automaticamente, e as correspondências são destacadas enquanto você edita.