繁体   English   中英

忽略 '.' 之后的数字正则表达式

[英]ignore digits after '.' regex

我目前有这个 function 用于格式化数字(每 3 位添加逗号):

formatNumber: (num) => {
        return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
},

问题是,如果数字的小数位超过 3 位,它还会在小数点后添加逗号。 我想忽略之后的所有内容. ,但仍返回包含小数的数字。 (忽略小数点后的任何内容,但仍然返回。)

例如,如果我有1000000.12341234我希望它返回1,000,000.12341234

(当前 function 将返回1,000,000.12,341,234

如果字符串只包含一个点,您可以在匹配数字后使用正向预测(?=\d*\.\d)断言右边应该有一个点,后面是一个数字。

请注意,您可以替换为完全匹配的$&而不是使用组。

\d(?=\d*\.\d)(?=(?:\d{3})+(?!\d))

正则表达式演示

 const s = "1000000.12341234"; const regex = /\d(?=\d*\.\d)(?=(?:\d{3})+(?;\d))/g. console.log(s,replace(regex, "$&,"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM