Que tal prueba así:
:
La lógica es la siguiente:
[3-9]{1} = rango del 3 al 9 y estrictamente 1 caracter
[0-5]{2} = rango del 0 al 5 y estrictamente 2 caracteres
y funciona una u otra con el operador or "|"
Si pones {1,2} quiere decir que tenga 1 o 2 caracteres y cuando solo es {5} quiere decir 5 caracteres estrictamente.
Saludos espero te sirva.