正则表达式:去除除最后一个单一字符以外的所有字符

3
我们的薪资输入字符清理操作将除了数字(0-9)和小数点(.)之外的所有字符替换为空字符串。
正则表达式为:[^0-9.] 这样就会把类似于“63,000.00英镑”的字符串转化为“63000.00”,这个格式可以很容易地被转化成浮点数。现在,我想清理那些使用小数点作为千分位分隔符和小数点分隔符的情况(例如“63.000.00”)。我应该如何编写正则表达式来仅保留最后一个点号字符?

1
正则表达式不是国际化数字的正确工具。 - zzzzBov
1
@zzzzBov,真的有一个国家合法地同时使用小数点作为千位分隔符和小数分隔符吗?我将其视为处理打字错误的功能,而不是国际化功能。 - Martin Joiner
如果输入来自HTML,您可以始终在那里强制执行数据格式。这可能比事后猜测它们的格式要少痛苦。 - Mr. Llama
1
@MartinJoiner,欢迎来到i18n(国际化)!(链接:http://zh.wikipedia.org/wiki/%E5%9B%BD%E9%99%85%E5%8C%96) - zzzzBov
@Mr.Llama 尽管我们利用了许多HTML5功能,但我们不使用type="number",因为它不支持逗号分隔的千位数。我们发现许多用户将薪水输入为“50,000”而不是“50000”,因此限制他们使用逗号会不必要地损害用户体验。我个人发现四个连续的零没有逗号很难阅读。 - Martin Joiner
显示剩余4条评论
1个回答

6
您可以使用此正则表达式进行替换:
\.(?![^.]+$)|[^0-9.]

正则表达式演示

替换为空字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接