Как составить регулярное выражение,  где часть строки может быть, а может и не быть?
? - одно или ноль вхождений предшествующего символа или подмаски.
Соответственно, ^[0-5]?[0-9]$ или ^[0-5][0-9]?$, смотря какая из цифр необязательна.
Как-то так:
^([0-9]|[0-5][0-9])$