正则表达式匹配除特定位置的小数点或逗号之外的所有非数字

Regex match all non-digits except decimal or comma at a specific position

这是我的号码:

,000,000.00
100000000.00
100000
,000.00
2.000,00
10000,00

我想得到:

1000000.00
100000000.00
100000
1000.00
2000,00
10000,00

这是我的正则表达式:

[^\d(,.{3})]

我想删除除小数点或逗号以外的所有非数字,如果它位于右数第 3 个位置。这可能吗?

字符集(或否定字符集)应该包含那些你想匹配的字符,或者那些你不想匹配的字符——如果你想执行额外的测试(例如有问题的字符不在行尾附近),在字符集 之外 进行这些测试。

这里可以使用负数字符集

[^\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