/* * @Descripttion: 表单验证工具函数 * @Author: TM丶 * @LastEditors: 小明丶 * @Date: 2019-04-01 19:54:53 * @LastEditTime: 2020-11-09 14:26:43 */ import IDValidator from './IDValidator'; let fns = { // 参数是否为真 isEmpty(value) { return value !== "" && typeof value !== "undefined" && value !== null; }, //密码验证 isPassword(value) { // 验证密码格式 return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(value); }, // 验证码验证 isCode(value) { return /^\d{4}$/.test(value); }, isEmail(value){ return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value); }, // 验证电话 isTel(value) { return /^\d{11}$/.test(value); }, //验证身份证 isIdCard(value){ return /^[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{3}([0-9]|X)$/.test(value) }, // idCard check checkIDCard(idCard) { // 验证身份证格式 return IDValidator.isValid(idCard); }, //验证银行卡号 isBankCode(iccid){ let initCard = iccid, s1 = 0, s2 = 0; iccid = iccid.substring(0, iccid.length - 1); let reverse = ''; for (let i = iccid.length; i > 0; i--) { reverse += iccid.charAt(i - 1); } for (let i = 0; i < reverse.length; i++) { let digit = parseInt(reverse.charAt(i), 10); if (i % 2 != 0) { s1 += digit; } else { s2 += 2 * digit; if (digit >= 5) { s2 -= 9; } } } let sum = 10 - ((s1 + s2) % 10); if (sum === 10) { sum = 0; } return iccid + sum == initCard; } }; let Validator = function (form, rules) { return { // rule demo //rules:>>> [{key:"formkey",message:"",type:"isEmpty",rule:/\d/}] check(callback) { if (!Array.isArray(rules) && rules.length === 0) throw "rules must be instance of Array"; let len = rules.length; for (let index = 0; index < len; index++) { const ruleItem = rules[index]; let fnName = fns[ruleItem.type]; if (fnName && !fnName(form[ruleItem.key])) { callback(ruleItem); return false; } // 如果有自定义验证规则 let rule = ruleItem.rule; if(typeof rule !=='undefined' && !rule.test(form[ruleItem.key])){ callback(ruleItem); return false; } } return true; } } }; // export default Validator; export default { install(Vue,opt){ Vue.prototype.$validator = Validator; } }