正则,正负数字,支持小数,位数可调节

/**
 *  只能输入固定位数的正负数字,可小数。
 *  @param {object} form 表单对象
 *  @param {string} key 键名不叫money时需要传入新的键名
 *  @param {string} ws 几位小数,默认不限位数,传1代表1位小数
 *  @example this.$fc.numDxsCheck(obj, 'goodsPrice', 2)
 * */
 export function numDxsCheck(form, key = 'money', ws = '') {
  form[key] = form[key] + '';

  // 先把非数字的都替换掉,除了数字和.
  form[key] = form[key].replace(/[^\d.-]/g, '');
  // 必须保证第一个为数字而不是.
  form[key] = form[key].replace(/^\./g, '');
  // 保证只有出现一个.而没有多个.
  form[key] = form[key].replace(/\.{2,}/g, '.');
  // 保证只有出现一个-号,且在首尾
  form[key] = form[key].slice(0, 1) + form[key].slice(1, form[key].length).replace(/\-/g, '');

  // 动态正则,小数位动态处理
  const c = new RegExp('^(\\-)*(\\d+)\\.(\\d{0,'+ws+'})\.*$');
  // 只能输入两个小数
  form[key] = form[key].replace(c, '$1$2.$3');
}

你可能感兴趣的:(正则,正负数字,支持小数,位数可调节)