用法
import validator from "/validator.js"
let result = validator.validator(['ip'],"123.56.7.206")
if(result){
console.log("验证通过");
}else{
console.log(validator.errors);
}
export default {
// 手机号
phone: {
pattern: new RegExp(/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/, 'g'),
message: '手机号码格式不正确'
},
// ip验证
ip: {
pattern: new RegExp(/^91\d{2}|2[0-4]\d|25[0-5][1-9]\d|[1-9](\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)){3}$/, 'g'),
message: '请输入正确的IP地址'
},
requiredEnd: {
pattern: new RegExp(/^\S*$/, 'g'),
message: '结尾不能有空格'
},
required: {
pattern: new RegExp(/\s+/, 'g'),
message: '不能有空格'
},
requiredBegin: {
pattern: new RegExp(/^\S+/, 'g'),
message: '开头不能有空格'
},
// 密码
password: {
pattern: new RegExp(
'^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\\W_!@#$%^&*`~()-+=]+$)(?![0-9\\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\\W_!@#$%^&*`()-+=]{7,20}$'
),
message: '密码由6位以上的大小写字母、数字及特殊字符中的3种组合而成',
},
// MAC 地址验证
MAC: {
pattern: new RegExp(
/^[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}$/
),
message: 'MAC地址格式错误'
},
username: {
pattern: new RegExp(/^[a-zA-Z0-9;',()_./~!@#$%^&*-]{6,10}$/, 'g'),
message: '名称需要在6-10位,支持数字、字母、英文标点(半角)',
},
specialStr: {
pattern: new RegExp(/^[\u4e00-\u9fa5\a-zA-Z0-9]+$/, 'g'),
message: '不能有特殊字符',
},
// 身份证 验证
ID: {
pattern: new RegExp(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, 'g'),
message: '身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位可能为数字或字符X',
},
// 时间 24:20
time: {
pattern: new RegExp(/^(([0-1][0-9])|(^2[0-3])):([0-5][0-9])$/, 'g'),
message: '请输入正确的时间',
},
//纬度
latitude: {
pattern: new RegExp(/^-?((0|[1-8]?[0-9]?)(([.][0-9]{1,10})?)|90(([.][0]{1,10})?))$/, 'g'),
message: '请输入正确的纬度',
},
// 经度
longitude: {
pattern: new RegExp(/^-?((0|1?[0-8]?[0-9]?)(([.][0-9]{1,10})?)|180(([.][0]{1,10})?))$/, 'g'),
message: '请输入正确的经度',
},
// 邮箱
email: {
pattern: new RegExp(
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
'g'),
message: '邮箱格式不正确',
},
//人民币
RMB: {
pattern: new RegExp("^([\u4e00-\u9fa5]|[.])*$"),
message: "不能含有中文"
},
// 企业税号
taxNumber: {
pattern: new RegExp(/^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/),
message: "税号格式不正确"
},
//邮政编码
postalCode: {
pattern: new RegExp(/^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/),
message: "邮政编码不正确"
},
//统一社会信用代码
creditCode: {
pattern: new RegExp(/^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$/),
message: "邮政编码不正确"
},
// 车牌号 "京A00599"
carNumber: {
pattern: new RegExp(/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/),
message: "车牌号不正确"
},
// 新能源车
carNumberNewEnergy: {
pattern: new RegExp(/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z](?:((\d{5}[A-HJK])|([A-HJK][A-HJ-NP-Z0-9][0-9]{4}))|[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳])$/),
message: "新能源车,车牌号不正确"
},
// 护照
passport: {
pattern: new RegExp(/(^[EeKkGgDdSsPpHh]\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\d{7}$)/),
message: "新能源车,车牌号不正确"
},
// 错误消息
errors:[],
// 状态
status:true,
// 验证是否成功
validator: function (rule, str) {
let result = true;
// 规则数组
if(rule instanceof Array){
for(let i =0 ;i<= rule.length -1;i++){
let Exp = this[rule[i]];
if(Exp){
if(!Exp.pattern.test(str)){
this.status =false;
this.errors.push(Exp.message);
}
}else{
this.status =false;
this.errors.push("验证规则:" + rule[i] +"不存在");
}
}
}
// 单个规则
if(typeof rule =='string'){
let Exp = this[rule];
if(Exp){
if(!Exp.pattern.test(str)){
this.status =false;
this.errors.push(Exp.message);
}
}else{
this.status =false;
this.errors.push("验证规则:" + rule +"不存在");
}
}
return result;
}
}