I want to check if a field is a valid time value (just seconds). So I want to accept the numbers from 0 to 59. I came out with this:
[0-5][0-9]?
If you want the 0 to be optional, move the ? to just after the [0-5] instead.
[0-5]?[0-9] should do it.
If you want to make the tens digit optional, not the unit position, place the ? there:
[0-5]?[0-9]
In your 2nd regex, you need to remove that ? from the first part, and make it [1-5] instead of [0-5]:
[0-9]|[1-5][0-9]
And if you want to be flexible enough to allow both 7 and 07, then use [0-5]:
[0-9]|[0-5][0-9]
And then, simplifying the above regex, you can use:
[0-5]?[0-9] // ? makes [0-5] part optional
This should be sufficient: [0-5]?\d
However if you want to enforce two digits (ie. 01, 02...) you should just use [0-5]\d