const pattern = /^-?(\d|10)(\.\d)?$/
//上面只是格式校验
//-10到10,用大小判断就行value < rule.min || value > rule.max
console.log(pattern.test(-10)) //true
例如在vue2+ElementUI中:
//自定义规则
rules:{
field: [
{ validator: this.numberValid, validType: 'positive', trigger: ['blur'] },
{ validator: this.numberLimitValid, min: -10, max: 10, trigger: ['blur', 'change'] }
]
}
//numberValid格式校验方法
numberValid(rule, value, callback) {
const type = rule.validType
var pattern = null
if (type === 'positive') {
pattern = /^-?(\d|10)(\.\d)?$/
}
if (value && !pattern.test(value)) {
callback(new Error('数字格式不正确'))
} else {
callback()
}
},
//numberLimitValid限制范围方法
numberLimitValid(rule, value, callback) {
if (value && (value < rule.min || value > rule.max)) {
callback(new Error(`输入的范围应该是 ${rule.min} 到 ${rule.max}`))
} else {
callback()
}
}
同理其他的框架和UI框架都是差不多了,举一反三就行