You are getting groups for this:
^(?:(?:0(:?\.[0-9])?)|(?:1(?:\.0)?))$
^^ its a mistake i believe
It should be:
^(?:(?:0(?:\.[0-9])?)|(?:1(?:\.0)?))$
^^
:?
means optional colon. So it always matches with your input. Whereas ?:
means ignore group capture, which you are already using.