2
respostas

Mais sobre Regex

Não quero "mi gambá", não, mas como estamos falando de padrão de hora a pesar da resposta correta funcionar. O padrão que apresento abaixo não seria uma melhor opção. Já que não existe sábado 33h e segunda que é o maior conjunto de caractere ter 7 caracteres?

padrao = "[a-z]{1,7}[ ][0-5][0-9][h]"

Desde já agradeço

2 respostas

Oi José, tudo bem com você?

No padrão apresentado por você também será possível ler resultados como:

  • sabado 33h
  • domingo 59h

E não aceita resultados como:

  • segunda 2h
  • domingo 4h

Pois, o primeiro valor após o espaço pode ser um número de 0 a 5 e o segundo, de 0 a 9.

Seu questionamento sobre a validação de um padrão correto para hora e conjunto de caracteres da semana é muito válido =). Poderíamos melhorar a regex apresentada da seguinte forma:

[a-z]{1,7}[ ]([0-1]?[0-9]|2[0-4])[h]

Com isso, o que se tem é:

  • [a-z]{1,7}: aceitará caracteres que contenham tamanho de 1 até 7, neste caso, os dias da semana
  • [ ]: espaço em branco
  • ([0-1]?[0-9]|2[0-4])[h]: 0 a 1 opcionalmente(pode ou não aparecer), seguido de 0 a 9. Ou, casos onde tenha de 20 a 24 horas( 2[0-4])[h])

Qualquer dúvida é só falar, estou a disposição. Abraços e bons estudos!

Estranho, vou refazer meus testes...