监听 input 只能输入数字, 和一位小数

213 阅读1分钟
filterNumberAndDot(val) {
  let value = val;
  value = value
    .replace(/[^\d.]/g, "") //将非数字和点以外的字符替换成空
    .replace(/^\./g, "") //验证第一个字符是数字而不是点
    .replace(/\.{2,}/g, ".") //出现多个点时只保留第一个
    .replace(".", "$#$") // 1、将数字的点替换成复杂字符$#$
    .replace(/\./g, "") // 2、将字符串的点直接清掉
    .replace("$#$", ".") // 3、将复杂字符再转换回点
    .replace(/^(\-)*(\d+)\.(\d).*$/, "$1$2.$3"); //只能输入1个小数
  if (value.indexOf(".") < 0 && value != "") {
      value = parseFloat(value);
  } else if (value.indexOf(".") > 1 && value[0] === '0') {
      value = parseFloat(value);
  }
return value
},