js限制输入数字和小数

124 阅读1分钟
// limit如果传入,是保证只保留limit位小数,比如传2就是保证只有两位小数
export function inputNumber(val:string, limit:number) {
 // 先把非数字的都替换掉,除了数字和.
 val = val.replace(/[^\d.]/g, '')
 // 保证只有出现一个.而没有多个.
 val = val.replace(/\.{2,}/g, '.')
 // 必须保证第一个为数字而不是.
 val = val.replace(/^\./g, '')
 // 保证.只出现一次,而不能出现两次以上
 val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
 // 限制limit位小数
 if(limit){
  let result = val.split('.')[1]
  if(result && result.length>limit){
    val = val.slice(0,-(result.length-limit))
  }
}
 return val
}