【发布时间】:2021-05-04 12:54:18
【问题描述】:
我试图在我的应用程序中找到一种处理欧洲数字的简单方法,但结果比我想象的要复杂。根据欧洲的数字格式,千位分隔符用句点(.)表示,小数位用逗号(,)表示,Javascript中的数字运算符会混淆,并尝试将1000(写为1.000)解释为1,而欧洲人的用户对正则数字表达式感到困惑......目前我正在使用一个简单的正则表达式从数字中删除句点,以便正确呈现
(/\./g, '')
但正如您可以想象的那样,此解决方案仅在没有小数位时才有效。什么是删除任何千位分隔符的正则表达式,如果它们存在,并且如果最后两位数字前面有分隔符,请将其替换为小数分隔符,然后将数字转换并显示给用户原来的格式?
【问题讨论】:
-
你能提供一个最小的可重现的例子吗?
-
比如(/\./g, '')后面的5.000会被当作5000处理,但是5000,98同样的表达式会报错。要将 5000 转换回 5.000,我可以使用 .replace(/\B(?=(\d{3})+(?!\d))/g, ".") 之类的表达式,但同样,什么也不会发生在小数上
-
你怎么知道 5000 等于 5.000 而不是 50,00 ??
-
这也是问题所在。基本上,只要欧洲用户遵循欧洲惯例并且不放置任何千位分隔符,或者使用句点作为分隔符并且只输入整数,数字就会正确显示,但做其他任何事情都会立即导致数字被误解.
标签: javascript regular-language