// 常用正则 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}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$)|(^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$)$/, // 身份证号 'ExCredit': /^[^_IOZSVa-zW]{2}d{6}[^_IOZSVa-zW]{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 }