正则控制'输入'数字格式;可输入小数
/**
* 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!