例如:

'2,430,209.12340000' => '2,430,209.1234'

方案:

const str = '2,430,209.12340000'
str.replace(/(?:\.0*|(\.\d+?)0+)$/, '$1')

解释:

再解释下正则的意思`(?:\.0*|(\.\d+?)0+)$`

`(?:reg1|reg2)` 它是一个正则分组非捕获组,要么匹配reg1,要么匹配reg2,优先匹配reg1,加上?:不对捕获组记录
`\.0*` 表示匹配一个.开头,后边跟着00个以上数量的0,且不进行捕获,所以在填充$1时,就是个空值
`(\.\d+?)0+`它是一个捕获组,匹配一个.开头后边跟着非贪婪(懒惰)匹配任意数字,接着在末尾尽可能多的匹配0这个字符,匹配完成后,生成一个捕获组内容
`$`表示匹配结果需要以0作为结尾
0条评论 顺序楼层
请先登录再回复