Regex para hora (24 horas HH:MM)

Use /^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/ para verificar se uma string inteira é uma hora válida (formato 24 horas HH:MM). Cada exemplo abaixo foi testado no padrão, e você pode abri-lo no Testador de Regex com os exemplos já carregados.

Atualizado em

/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/
Abrir no Testador de Regex
EntradaResultado
00:00✓ Corresponde
23:59✓ Corresponde
14:30:15✓ Corresponde
09:05✓ Corresponde
24:00✗ Não corresponde
9:30✗ Não corresponde
12:60✗ Não corresponde
12:30:60✗ Não corresponde

Como o padrão funciona

ParteSignificado
(?:[01]\d|2[0-3])Horas 00–23
:Dois-pontos
[0-5]\dMinutos 00–59
(?::[0-5]\d)?Segundos opcionais

Exemplos de código

JavaScript

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

Python

import re

bool(re.fullmatch(r'(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?', value))

PHP

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

Notas e limitações

Torne o zero à esquerda opcional com (?:[01]?\d|2[0-3]) se os usuários digitarem 9:30.

Perguntas frequentes

Qual é o regex para hora (24 horas HH:MM)?
/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/ — ele corresponde à string inteira. Veja a tabela acima para entender o que cada parte faz.
Quais exemplos correspondem?
Dos exemplos testados, estes correspondem: 00:00, 23:59, 14:30:15, 09:05. Os outros não.
Como testo este 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 conforme você edita.