1
resposta

Desafio de captura da hora

Tem aqui uma proposta de resolução em que evita um horário fora do padrão, por exemplo: 39h69min89s. Vejam que na metade do Regex tem um meta char "|", que indica OU , então, na captura do formato das horas, se o primeiro dígito for maior que 2, o segundo dígito fica restrito de 0 a 3, não ultrapassando assim às 23h. Em relação aos minutos e segundos, temos o valor máximo das casas decimais até 5, e o valor unitário até 9, desse jeito os valores recebidos ficam entre o intervalo de 00 a 59 minutos ou segundos.

[0-1]\dh[0-5]\dmin[0-5]\ds|[2](?=[0-3])\dh[0-5]\dmin[0-5]\ds
1 resposta

Olá Allan,

Obrigada por compartilhar essa proposta de resolução para captura de horas utilizando expressões regulares. Realmente, o uso do operador "|" permite que sejam definidas duas opções de captura, o que é muito útil para limitar os valores de horas, minutos e segundos dentro de um intervalo válido.

A expressão regular que você postou parece estar bem completa e restrita, garantindo que os valores capturados estejam dentro do intervalo correto. Apenas uma observação: na segunda opção de captura, você utilizou o lookahead "(?=[0-3])", que não faz parte do valor capturado. Sendo assim, é possível retirá-lo da expressão sem prejudicar o resultado final.

Para exemplificar, essa expressão regular pode ser utilizada em conjunto com a função "match" do JavaScript para capturar valores de horas, minutos e segundos em uma string. Por exemplo:

const texto = "O evento começará às 19h30min";
const regex = /[0-1]\dh[0-5]\dmin[0-5]\ds|[2]\dh[0-5]\dmin[0-5]\ds/g;
const valores = texto.match(regex);
console.log(valores); // Output: ["19h30min"]

Espero ter ajudado e bons estudos!