Ваше регулярное выражение (\d+\.\,?)+
соответствует 1 или более повторениям, состоящим из 1+ цифр, точки и опционального числа ,
.Это означает, что строки должны заканчиваться точкой.3.053,500
не заканчивается точкой.
Вы можете использовать
s.matches("\\d+(?:[.,]\\d+)*")
См. Демонстрационную версию regex
Обратите внимание, что ^
и $
привязки не нужны в методе Java .matches()
, поскольку сопоставление автоматически привязывается к началу / концу строки.На regex101.com якоря должны соответствовать началу / концу строки (поскольку демонстрация запускается для многострочной строки).
Детали шаблона
\d+
- 1+ цифр (?:
- начало группы без захвата: [.,]
- точка или ,
\d+
- 1+ цифр
)*
- 0 или более повторений.