正则控制'输入'数字格式;可输入小数
/**
* kevin 2021/2/22
* @description 正则控制'输入'数字格式;可输入小数
* @param param
* @param num 保留小数位数只能保留2位,3位,4位,5位 默认2位
* @param negativeBool 是否可以为负数 默认可以为负数
* @param decimalBool 是否可以输入小数 默认可以输入小数
* @returns {string | null}
*/
export function checkPrice(param, num, negativeBool, decimalBool) {
// 判断参数是否包含负数
var num_ = ''
if (negativeBool !== false) {
if (param.split('')[0] === '-') { // 判断第一个字符是否有'-'如果有的话则保留
num_ = '-'
}
}
var price = '' + param
if (decimalBool !== false) {
if (num === 3) {
price = price
.replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.replace(/^(-)*(\d+)\.(\d\d\d).*$/, '$1$2.$3') // 只能输入3个小数
} else if (num === 4) {
price = price
.replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.replace(/^(-)*(\d+)\.(\d\d\d\d).*$/, '$1$2.$3') // 只能输入4个小数
} else if (num === 5) {
price = price
.replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.replace(/^(-)*(\d+)\.(\d\d\d\d\d).*$/, '$1$2.$3') // 只能输入4个小数
} else {
price = price
.replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3') // 只能输入两个小数
}
} else {
price = price
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace(/\D/g, '')
}
if (price.indexOf('.') < 0 && price !== '') {
// 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
price = parseFloat(price)
}
price = num_ + price
return price
}
本文出自于 转载请注明出处,否则会追究。
本文出自于 转载请注明出处,否则会追究。