js 怎样用正则去掉小数点后面多于的0
想用replace替换掉小数点后面多于的0.
```
例如： 12.000700 ——————> 12.0007

```
注意：若是没有小数点的话，匹配不生效，不替换任何字符。
1.（不希望转为数字）我的整个数值计算是字符串按位计算的，所以我并不希望将他转为数字，而是通过正则的方式去掉多余的0。不愿意转换也有一点是String/Number等方法对小数点后面的位数有限制。
2.（需要考虑没有小数点的情况）/0*$/或者/0+$/这种单纯的匹配末尾是不全面的。可能有没有小数点的存在。
```
并不希望: 12000 ——————> 12

```
这明显改变了数值
3.（目前想到的方法）目前的能想到的用了两个replace一个match。先匹配到小数点右面的字符。再将该字符去末尾0替换到小数点右面。显然不高级，有没有更优雅的写法。
```
var str = "12.000700";
var _tmp = str.match(/\.\d+0+/)[0].replace(/0+$/,'');
console.log(str.replace(/\.\d+0+/, _tmp));
```
```
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`作为结尾