Вы не указали, какой движок регулярных выражений вы используете и как, но сопоставители регулярных выражений не обязательно пытаются сопоставить шаблон с входом целом или найти самое длинное совпадение.Как правило, они удовлетворены тем, что нашли любое совпадение, и, если возможно несколько, то какое из них сопоставляется, зависит от двигателя.Имея это в виду, обратите внимание, что начальная .2
подстрока вашего ввода действительно может быть сопоставлена с шаблоном, используя однозначную альтернативу шаблона.
Ваш второй пример, возможно, может соответствовать просто 0.
а не вся строка.Тот факт, что он соответствует всей строке, является функцией реализации движка regex, или того, как вы его используете, или и того, и другого.
Если вы хотите, чтобы шаблон соответствовал всему вводу (илииначе совсем не совпадают), тогда якорь это:
^(\.(\d|\d\d))$
В большинстве диалектов регулярных выражений вы встретите, ^
соответствует началу (нулевой ширины) начала ввода илиодна строка ввода, и, аналогично, $
соответствует концу.