replace小数点后保留2位

小数点后保留2位

网上一堆小数点保留2位正则,但大部分都是直接copy,未解决0101和以.开头的这种情况

网上写法

obj.value = obj.value.replace(/[^\d.]/g,"");  //清除“数字”和“.”以外的字符   
  obj.value = obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的   
  obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");  
  obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数  
借助前辈们的思想改动如下,解决0101和以.开头这种情况
val = e
            .replace(/[^\d.]/g, "")
            .replace(/^0\d+|^\./g, "")
            .replace(/\.{2,}/g, ".")
            .replace(".", "$#$")
            .replace(/\./g, "")
            .replace("$#$", ".")
            .replace(/^(\d+)\.(\d\d).*$/, "$1.$2");
e为数据源,如oninput事件中的e
注意下"$#$",并不是特殊语法,只是用来替换.后续在替换回来。$1,$2为占位符对应正则中的()里的内容
posted @ 2020-03-11 14:11  萝卜爱吃肉  阅读(1182)  评论(0编辑  收藏  举报