replace小数点后保留2位

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+).(dd).*$/,'$1$2.$3');//只能输入两个小数  
借助前辈们的思想改动如下,解决0101和以.开头这种情况
val = e
            .replace(/[^d.]/g, "")
            .replace(/^0d+|^./g, "")
            .replace(/.{2,}/g, ".")
            .replace(".", "$#$")
            .replace(/./g, "")
            .replace("$#$", ".")
            .replace(/^(d+).(dd).*$/, "$1.$2");
e为数据源,如oninput事件中的e
注意下"$#$",并不是特殊语法,只是用来替换.后续在替换回来。$1,$2为占位符对应正则中的()里的内容
原文地址:https://www.cnblogs.com/tommymarc/p/12794556.html