Вы получаете все совпадения, потому что вы используете 3 чередования (из которых последние 2 одинаковы [0-9]+
)
Первая часть чередования утверждает начало строки ^
и фактическикласс символов ^[.\]?|[0-9]*
, повторяющийся 0+ раз, соответствующий любому из перечисленных символов .]?|
или диапазону 0-9.
После этого он должен соответствовать точке, которая является последней точкой в строке, посколькутакже могут быть сопоставлены в классе персонажа.Тогда другое чередование сопоставляет любые цифры в конце.
Если поддерживается положительный прогноз, а пустые совпадения не разрешены, вы можете использовать положительный прогноз, чтобы проверить, присутствует ли хотя бы цифра или точка.
Затем сопоставьте необязательную точку и используйте шаблон зацикливания, чтобы сопоставить 1+ цифр, за которыми следует необязательная точка.
^(?=[.\d])\.?(?:\d+\.?)*$
^
Начало строки (?=[.\d])
Укажите точку или цифру \.?
Соответствует необязательной точке (?:\d+\.?)*
Повторите 0+ раз, сопоставляя 1+ цифру и дополнительную точку $
Конецстроки
Regex demo