1、正则校验批次
var checkBatch = (rule, value, callback) => { if (value != null) { const regBatch = /^[0-9a-zA-Z_-]*$/ if (regBatch.test(value)) { return callback() } callback(new Error('请输入合法的批号!')) } callback() }
注意:不管怎么样,都要执行一次callback()函数,否则校验不通过。
2、正则校验数量
var checkNum = (rule, value, callback) => { if (value != null) { const regNum = /^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)*$/ if (!regNum.test(value)) { callback(new Error('请输入合法的数量!')) } callback() } callback() }
注意:不管怎么样,都要执行一次callback()函数,否则校验不通过。
3、正则校验入库时间和生产时间
const checkImportDate = (rule, value, callback) => { if (value === null && value === '') { return callback(new Error("请输入入库时间")); } if (this.edit.expireDate != null && (new Date(this.edit.expireDate) <= new Date(value))) { callback(new Error("有效期截止时间不能小于或等于入库时间")); } else { callback(); } }
const checkProductionDate = (rule, value, callback) => {
if (value === null && value === '') {
return callback(new Error("请输入生产时间"));
}
if (this.edit.expireDate != null && (new Date(this.edit.expireDate) <= new Date(value))) {
callback(new Error("有效期截止时间不能小于或等于生产时间"));
} else {
callback();
}
}
注意:不管怎么样,都要执行一次callback()函数,否则校验不通过。
4、正则校验过期时间
const checkExpireDate = (rule, value, callback) => { if (!value) { return callback(new Error("请输入有效期截止时间")); } if (this.edit.importDate != null && this.edit.importDate != '') { if (new Date(this.edit.importDate) >= new Date(value)) { callback(new Error("入库时间不能大于或等于有效期截止时间")); } else { callback(); } } if (this.edit.productionDate != null && this.edit.productionDate != '') { if (new Date(this.edit.productionDate) >= new Date(value)) { callback(new Error("生产时间不能大于或等于有效期截止时间")); } else { callback(); } } }
5、正则校验手机号
var checkMobile = (rule, value, callback) => { const regMobile = /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/ if (regMobile.test(value)) { return callback() } callback(new Error('请输入合法的手机号!')) }
注意:不管怎么样,都要执行一次callback()函数,否则校验不通过。
6、正则校验年龄
var checkAge = (rule, value, callback) => { const regAge = /^(?:[1-9][0-9]?|1[01][0-9]|130)$/ if (regAge.test(value)) { return callback() } callback(new Error('请输入合法的年龄!')) }
7、正则校验体重(由于体重不是必须验证的,所以只有当输入之后才开始验证,没有输入内容则不验证)
var checkWeight = (rule, value, callback) => {
if(value != null && value.length > 0){ const regWeight = /^\d{2}(\.\d){0,1}|\d{3}(\.\d){0,1}$/ if (regWeight.test(value)) { return callback() } callback(new Error('请输入合法的体重!'))
}
callback() }
8、正则校验身高(由于身高不是必须验证的,所以只有当输入之后才开始验证,没有输入内容则不验证)
var checkHeight = (rule, value, callback) => {
if(value != null && value.length > 0){ const regHeight = /^\d{3}$/ if (regHeight.test(value)) { return callback() } callback(new Error('请输入合法的身高!'))
}
callback() }
9、正则校验URL
let validateURL = (rule, value, callback) => { if (!value) { return callback(new Error('必填')) } const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ if (!urlregex.test(value)) { callback(new Error('url不合法')) } else { callback() } }
10、校验是否已经存在
const entityNo = (rule, value, callback) => { if (value === '' || value == null) { callback(new Error('请输入社会信用代码')) } else if (!checkNumAndWord(value)) { callback(new Error('请输入正确的社会信用代码')) } if(this.entityNo1 != value){ // if(this.dialogStatus === "create" || (this.entityNo1 && this.entityNo1 != value)){ enterprise.checkEntityNo({entityNo:value}).then(res => { if(res.success){ if (res.data) { callback(new Error("社会信用码已存在")) } else { callback(); } } }) }else{ callback(); } }
注意:不管怎么样,都要执行一次callback()函数,否则校验不通过。
不能写成如下的样子:
const entityNo = (rule, value, callback) => { if (value === '' || value == null) { callback(new Error('请输入社会信用代码')) } else if (!checkNumAndWord(value)) { callback(new Error('请输入正确的社会信用代码')) } if(this.entityNo1 != value){ // if(this.dialogStatus === "create" || (this.entityNo1 && this.entityNo1 != value)){ enterprise.checkEntityNo({entityNo:value}).then(res => { if(res.success){ if (res.data) { callback(new Error("社会信用码已存在")) } else { callback(); } } }) } }
11、校验邮箱
邮箱的校验比较容器,只需要将type的值设置为email即可。
email: [ { required: false, message: '请输入邮箱', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }, { max: 50, message: '长度不能超过50', trigger: 'blur' } ],
12、校验身份证号
const validatorIdCard = idCard => { if (!/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(idCard) && !/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/.test(idCard)) { return false } return true }