美文网首页
js 用正则去掉小数点后面多于的0

js 用正则去掉小数点后面多于的0

作者: 竹小星 | 来源:发表于2018-07-04 16:21 被阅读29次

原文链接

const arr=['1200.00100','1200.00000','1200.','1200','1200.10000','0.120010000','0.000011111']
const regexp=/(?:\.0*|(\.\d+?)0+)$/
arr.forEach((item)=>{
    console.log(item.replace(regexp,'$1'))
})

// > 1200.001
// > 1200
// > 1200
// > 1200
// > 1200.1
// > 0.12001
// > 0.000011111

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

先分解成4部分

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

相关文章

网友评论

      本文标题:js 用正则去掉小数点后面多于的0

      本文链接:https://www.haomeiwen.com/subject/xsaeuftx.html