\d{2}d{3}\
is matching exactly two digits followed by exactly three minor d ... the final backslash might cause pattern compilation error or requests a backslash succeeding those sequence of d's.
\d{1,2}
is matching one or two decimal digits (0-9).
\d{1,3}
is matching one, two or three decimal digits.
If you need to match two different sequences you need to combine them using | in between:
\d{1,2}|\d{1,3}
However, this makes little sense, for the latter part is including the former.
\d{1,2}\.\d{1,3}
is matching two digits, succeeded by a period succeeded by one to three digits. But if period and its succeeding digits are optional as a whole, you need to group that first before declaring this group to be optional:
\d{1,2}(\.\d{1,3})
is grouping the latter part while
\d{1,2}(\.\d{1,3})?
is finally declaring that group to be optional.
If that's all to be matched in a string, you need to wrap it in anchors for matching beginning and end of string resulting in
^\d{1,2}(\.\d{1,3})?$