数据校验是项目开发中经常遇到的问题,为了项目的精简,所以自己对基本的数据校验做简单封装。代码如下:
class Formvalidate {
constructor(rules) {
this.rules = rules;
}
//不为空的校验规则
requirde(val = '') {
return val.length > 0;
}
//最小长度为6的校验规则
minlength(val = '') {
return val.length >= 6;
}
//手机号校验
mobileNum(val = '') {
console.log(val)
return /^1[35789]\d{9}$/.test(val);
}
//数据必须为汉字或者大写字母
hanzi(val = '') {
return val.match(/^[A-Z\u4e00-\u9fa5]+$/)
}
//校验方法可自行拓展,最后返回boolean 值即可,true表示校验通过
//遍历校验方法,遇到不通过将其push到err数组,最后返回err
validate(obj) {
let err = []
Object.keys(this.rules).map(rule => {
Object.keys(this.rules[rule]).map( rul => {
if(!this[rul](obj[rule], this.rules.rule)) {
err.push(this.rules[rule][rul])
}
})
})
return err
}
}
使用方法:
1、定义rules规则:
rules: {
//需要校验的字段的key
username: {
//校验规则名称:以及校验失败的提示信息
mobileNum: '手机号格式不正确',
},
password: {
requirde: '不能为空',
minlength: '不得小于6位',
},
},
2、校验的执行函数:
//描述对象 => 校验规则(rules)所包含字段的key:及对应的值(校验触发时的真实值)
const des = {
username: this.username,
password: this.password,
};
//实例化构造函数同时将校验规则传入
let vali = new Formvalidate(this.rules);
//调用Formvalidate构造函数上的方法,改方法返回err数组,err为所有校失败提示信息的集合类似['不能为空', '不得小于6位']
let err = vali.validate(des)
if(err.length > 0) {
//数据校验不通过执行的代码 err[0]
//此处为uni-app项目示例代码,其他项目可以alert err信息
uni.showToast({
title: err[0],
icon: 'none'
})
} else {
//数据校验没问题时执行的代码
}