This should work ^(?:(?:([01]?\\d|2[0-3]):)?([0-5]?\\d):)?([0-5]?\\d)$
The reason is that the listed symbols in the error message have special meaning, but \d
is not one of those defined special symbols for using \
, this means you have to escape it (by adding an extra \
in front of the symbol).