Вам нужно экранировать .
, так как это специальный символ в регулярном выражении, который соответствует любому символу. Вы также должны удалить ^
, который привязывает начало номера.
str.replaceAll("\\.0*$", "");
Вы можете использовать вид сзади, если хотите убедиться, что перед точкой стоит число, например:
str.replaceAll("(?<=^\\d+)\\.0*$", "");
Lookbehind (часть (?<=...)
) не является частью матча, поэтому он не будет заменен, но он все равно должен совпадать, чтобы соответствовать остальному регулярному выражению.