Strict hours and days format

We refuse invalid hours and days like 24h, 0d or 32d.

I have also updated test data a little bit.
the leading `0` should be optional, right?

-> `(0?[1-9]|[12]\d|3[01])`