小程序格式化金额输入

金额输入限制条件

参考支付宝|微信支付的时候输入金额的限制

  1. 只能输入0-9和小数点”.”
  2. 首位不能出现两个0
  3. 第二位不是小数点”.”的情况下, 首位不能是0
  4. 首位不能出现小数点”.”
  5. 小数点”.”只能出现一次
  6. 小数点”.”后最多两位
Page({
  // 格式化输入的金额
  formatAmount(val) {
    let num = val.toString(); // 先转换成字符串类型
    if (num.indexOf('.') == 0) { // 第一位就是".", 则前面补0
      num = '0' + num
    }
    num = num.replace(/[^\d.]/g, "");  // 清除"数字"和"."以外的字符
    num = num.replace(/\.{2,}/g, "."); // 只保留第一个"."清除多余的
    num = num.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
    num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 小数点后只能输入两位
    if (num.indexOf(".") < 0 && num != "") {
      num = parseFloat(num);
    }
    return num
  },

  // input输入事件
  inputEvent(e){
    this.setData({
      oilAmount: this.formatAmount(e.detail.value)  // money匹配金额输入规则,返回输入值
    });
  }
})