// 常用正则
const regularData = {
'ExPhone': /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(19[0-9]{1})|(18[0-9]{1}))+\d{8})$/, // 手机号
'ExEmail': /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/, // email
'ExZip': /^[0-9]{6}$/, // 邮政编号
'ExCellphone': /^([0-9]{3,4}-)?[0-9]{7,8}$/, // 座机
'ExBankcard': /^([1-9]{1})(\d{14}|\d{18})$/, // 银行卡号
'ExIdentity': /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/, // 身份证号
'ExCredit': /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/, // 社会信用代码
// 网址
'ExWebsite': /^((ht|f)tps?):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?/, // eslint-disable-line no-useless-escape
'ExPassWord': /^([a-zA-Z0-9!,.@#$%^&*()_?<>{}]){6,20}$/
}
const validateRules = (rule, value, callback) => { // 规则匹配
let reg = ''
if (rule.field) {
key = rule.field
if (key === 'mobile') {
reg = regularData['ExPhone']
validateMethod()
} else if (key === 'password' || key === 'pwd') {
reg = regularData['ExPassWord']
pwd = value
validateMethod()
} else if (key === 'email') {
reg = regularData['ExEmail']
if (value !== '') validateMethod()
} else if (key === 'passwordConfirm') {
if (value === '') {
callback(new Error('请再次输入密码'))
} else if (value !== pwd) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
} else if (key === 'isRead') {
if (value === false) {
callback(new Error())
} else {
callback()
}
}
}
// 验证规则
function validateMethod () {
if (reg.test(value)) {
// 指定验证字段验证值是否存在于数据库
if (key === 'mobile' || key === 'email') {
// 判断rules中对应字段的属性中是否存在exists属性,true验证存在性
if (rule.exists) {
checkExists()
} else {
callback()
}
} else {
callback()
}
} else {
// 区分指定验证字段返回的错误信息
if (key === 'mobile') {
callback(new Error('请输入有效的手机号'))
} else if (key === 'email') {
callback(new Error('请输入正确的邮箱地址'))
} else {
callback(new Error())
}
}
}
function checkExists () {
if (key === 'mobile') {
checkMobile({mobile: value})
.then((res) => {
if (res.data.code < 0) {
callback(new Error(res.data.msg))
} else {
callback()
}
})
} else if (key === 'email') {
checkEmail({email: value})
.then((res) => {
if (res.data.code < 0) {
callback(new Error(res.data.msg))
} else {
callback()
}
})
}
}
}
export {
areaData
, provinceCityData
, centerNavData
, regularData
, validateRules
}