js 用正則去掉小數(shù)點后面多于的0

原文鏈接

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,優(yōu)先匹配reg1,加上?:不對捕獲組記錄
  2. .0* - 表示匹配一個.開頭,后邊跟著0或0個以上數(shù)量的0,且不進行捕獲,所以在填充$1時,就是個空值
  3. (.\d+?)0+ - 它是一個捕獲組,匹配一個.開頭后邊跟著非貪婪(懶惰)匹配任意數(shù)字,接著在末尾盡可能多的匹配0這個字符,匹配完成后,生成一個捕獲組內(nèi)容
  4. $ - 表示匹配結(jié)果需要以0作為結(jié)尾
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容