export default {
validation: ((rule, value, callback) => {
//使用示例
// rule = {
// 'text1': [ //'text1'为表单变量字段名,与v-model中的formData.xxxx保持一致,与el-form-item中的prop=xxxx保持一致;
// {
// validator: this.validation, //必填:固定值
// check: ['empty', 'blank'], //必填:字符串数组,其中的类型值可参考validation.js中switch case语句中的注释
// label: '用户名', //选填:字符串,若传此参数,错误信息文本的前面则会加上此文本,如“不能为空”将变成“用户名不能为空”
// message: '请输入正确的身份证号码', //选填:字符串,若传此参数,则会使用此文本作为错误提示
// maxlength: 5, //选填:数字,若传此参数,除了check中的项目,还会追加字符长度验证
// }],
// }
if (rule && rule.check) {
let result, message = rule.lable || '';
//如果值为空且不包含非空验证,则跳过本次验证
if (!rule.check.includes('empty') && !value) {
result = true
}
else {
for (let type of rule.check) {
switch (type) {
case 'empty': //非空判断
result = value && value !== '' && value !== null && value !== undefined;
!result && (message += '不能为空');
break;
case 'blank': //首尾不能为空格
result = !(/^\s+/g.test(value)) && !(/\s+$/g.test(value));
!result && (message += '输入错误');
break;
case 'number': //验证是否为纯数字
result = /^[0-9]*$/g.test(value);
!result && (message += '格式限制:数字');
break;
case 'en': //验证是否为英文字母
result = /^[A-Za-z]+$/g.test(value);
!result && (message += '格式限制:字母');
break;
case 'cn': //验证是否为中文汉字
result = /^[\u4e00-\u9fa5]{1,}$/g.test(value);
!result && (message += '格式限制:汉字');
break;
case 'en-number': //验证英文和数字混合
result = /^[A-Za-z0-9]+$/.test(value);
!result && (message += '格式错误');
break;
case 'mobile': //验证验证手机号
result = /^[1][3,4,5,7,8,9][0-9]{9}$/.test(value);
!result && (message += '手机号码格式错误');
break;
case 'email': //验证电子邮箱
result = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
!result && (message += '电子邮箱格式错误');
break;
case 'id': //验证身份证号码
// result = (/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/.test(value)) || (/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/.test(value));
result = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/.test(value);
!result && (message += '身份证号码格式错误');
break;
case 'realname': //验证姓名
result = /^[\u4e00-\u9fa5]{2,6}$/.test(value);
!result && (message += '姓名格式错误');
break;
case 'symbol': //验证不包含特殊符号
result = !(/[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/.test(value));
!result && (message += '包含非法字符');
break;
case 'ip': //验证IP地址
result = /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/g.test(value);
!result && (message += '格式错误');
break;
case 'array-length': //验证数组长度
if(rule.minlength && value.length < rule.minlength){
result = false;
message += '请至少选择' + rule.minlength + '项';
break;
}
else if(rule.maxlength && value.length > rule.maxlength){
result = false;
message += '请最多选择' + rule.maxlength + '项';
break;
}
else{
result = true;
break;
}
case 'carNumber' : //验证车牌号 智能验证普通常见的
result = /^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-HJ-NP-Z]{1}\d{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/.test(value);
!result && (message += '格式错误');
break;
case 'string-length': //验证字符长度
if(rule.minlength && value.length < rule.minlength){
result = false;
message += '低于字符限制:' + rule.minlength;
break;
}
else if(rule.maxlength && value.length > rule.maxlength){
result = false;
message += '超出长度限制:' + rule.maxlength;
break;
}
else{
result = true;
break;
}
case 'trueNumber': //正整数第一位不能为0
// result = /^[0-9]*$/g.test(value);
// result = /^(([1-9]{0,7})|(0{1}))(\.\d{1,2})?$/.test(value);
result = /^[1-9][0-9]*$/.test(value)
!result && (message = '请输入正整数');
// if(result)
break;
// 整数和小数
case'number-decimals':
result = /^-?\d$|^-?[1-9]\d+$|^-?\d+\.\d+$/.test(value)
!result && (message = '可以输入整数负数和小数');
// if(result)
break;
case 'number-length-12-2': //验证字符长度
// result = /^(([1-9]{0,11})|(0{1}))(\.\d{1,2})?$/.test(value);
result = /^[0-9]{1}\d{0,11}(\.\d{1,2})?$/.test(value)
!result && (message = '整数最多12位,小数最多2位');
// if(result)
break;
case 'number-length-8-2': //验证字符长度
// result = /^(([1-9]{0,7})|(0{1}))(\.\d{1,2})?$/.test(value);
result = /^[0-9]{1}\d{0,7}(\.\d{1,2})?$/.test(value)
!result && (message = '整数最多8位,小数最多2位');
// if(result)
break;
case 'number-length-6-2': //验证字符长度
// result = /^(([1-9]{0,5})|(0{1}))(\.\d{1,2})?$/.test(value);
result = /^[0-9]{1}\d{0,5}(\.\d{1,2})?$/.test(value)
!result && (message = '整数最多6位,小数最多2位');
// if(result)
break;
case 'number-length-8-3': //验证字符长度
// result = /^(([0-9]{0,7})|(0{1}))(\.\d{1,3})?$/.test(value);
result = /^[0-9]{1}\d{0,7}(\.\d{1,3})?$/.test(value)
!result && (message = '整数最多8位,小数最多3位');
// if(result)
break;
case 'pwd': //长度8-16必须包含大小写字母数字和特殊字符
result= /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)(?![a-zA-Z0-9]+$)(?![a-zA-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9\\W_!@#$%^&*`~()-+=]+$)(?![0-9A-Z\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`~()-+=]{8,16}$/.test(value)
!result && (message = '长度8-16必须包含大小写字母数字和特殊字符');
}
}
}
return result ? callback() : callback(new Error(rule.message ? rule.message : message));
}
})
}
05-31
120
03-25
7764