O problema foi o uso incorreto da classe.
Veja como deveria ser a regex para 24 horas: [0-2]?[0-9]h[0-5]?[0-9]min[0-5]?[0-9]s
Uma regex mais genérica: [0-9]{1,2}h[0-9]{1,2}min[0-9]{1,2}s
A expressão 3 está inválida pois como o ponto representa qualquer caracter vai interpretar 12h25min10s
mas também 1ah2bmin1cs
.
Explicando o seu erro
Ponto representa sim qualquer caracter, e o seu erro não foi esse.
- [012] - Significa que você quer 0, 1, ou 2 (apenas 1 caracter)
- em seguida você coloca o ponto, ou seja, pega qualquer caracter (somando ao primeiro ficaria: 10, 1a, 1x, 1-, ...)
- [0-5]{2} - Invalido para minutos pois não iria considerar nenhum numero superior a 5 (Ex: 36, 57, ...).
Acho que ja deu para te ajudar a entender onde está o problema :)