Наборы символов (или наборы отрицательных символов) должны только содержать те символы, которые вы хотите сопоставить, или те, которые вы не хотите сопоставлять - если вы хотите выполнить дополнительные тесты (такие какрассматриваемый символ не находится в конце строки), выполните эти тесты вне набора символов.
Здесь вы можете использовать отрицательный набор символов
[^\d\n,.]
для сопоставления символов, которые не являются цифрами, символами новой строки, запятыми или точками, и чередуйте этот набор символов с
[,.](?!\d{2}$)
, который будет соответствовать точкам и запятым, за которыми не следуют две цифры и конецлинии.В полном объеме:
[^\d\n,.]|[,.](?!\d{2}$)
и замените на пустую строку.Выход:
1000000.00
100000000.00
100000
1000.00
2000,00
10000,00
https://regex101.com/r/y0s1Bw/1