/** * TANGIMING 2018-3-9 * 这是一个用于存放正则表达式和一些验证方法的插件 * 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法 */ export default { // 金额格式化 formatMoney(str = 0) { str = str + ''; let newStr = ''; let count = 0; if (str.indexOf('.') === -1) { for (let i = str.length - 1; i >= 0; i--) { if (count % 3 === 0 && count !== 0) { newStr = str.charAt(i) + ',' + newStr; } else { newStr = str.charAt(i) + newStr; } count++; } str = newStr + '.00'; // 自动补小数点后两位 return str; } else { for (let i = str.indexOf('.') - 1; i >= 0; i--) { if (count % 3 === 0 && count !== 0) { newStr = str.charAt(i) + ',' + newStr; } else { newStr = str.charAt(i) + newStr; // 逐个字符相接起来 } count++; } str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3); return str; } }, // 身份证 中间用* 显示 cardIDHide(cardid) { if (cardid) { return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2'); } else { return ''; } }, //手机号,中间四位*显示 formatPhone(phone) { return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); }, // 电话号码格式 checkPhone(phone) { let reg = /^1([35789][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/; return reg.test(phone); }, checkEmail(email) { // 验证邮箱格式 let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/; // let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/; return reg.test(email); }, checkVerifyCode(code) { // 验证验证码格式 let reg = /^\d{6}$/; return reg.test(code); }, checkDynamicCode(code) { // 验证邀请码格式 let reg = /^[A-Za-z0-9]{4}$/; return reg.test(code); }, // password check checkPassword(password) { // 验证密码格式 let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/; return reg.test(password); }, // name check checkName(name) { // 验证用户名格式 let reg = /^[\u4E00-\u9FA5]{2,10}$/; return reg.test(name); }, // 账户名称的正则表达式 checkUsername(name) { let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/; return reg.test(name); }, // 统一验证 checkCommonField(name) { let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/; return reg.test(name); }, isIdcard(val) { let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val); return result; }, checkValEmpty(str) { // 验证是否为空 if ( str === undefined || str === null || str.length <= 0 || str === 'undefined' ) { return true; } else { return false; } }, // 验证佣金输入金额 checkCommission(commission) { // 小于100且后面可以带4个小数点 let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/; //一亿以内,保留四位小数 // /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/ // 如果通过的话,那么判断小数点的前几位数字 return reg.test(commission); }, // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写 checkChannelNo(channelNo) { let reg = /^[\w\d]{4,8}$/; return reg.test(channelNo); }, //验证是否包含空格 checkSpace(val) { let reg = /^\s+$/; if (reg.test(val)) { return true; } else { return false; } }, //将发送请求中的参数格式化,如果为空则转为null formatReq(obj) { for (let i in obj) { let item = obj[i]; if (item === null) continue; if ( item === undefined || item === '' || item === 'undefined' || item.length <= 0 || JSON.stringify(item) == '{}' ) { obj[i] = null; } } return obj; }, // 只能输入数字与小数点正则判断 checkIntegerAndDot(checkVal) { let dotReg = /\./g; let IntegerReg = /^[1-9]{1}\d{0,5}$/; // 如果输入了多个点,直接不符合要求 if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) { return false; // 输入了一个点 } else if ( checkVal.match(dotReg) && checkVal.match(dotReg).length === 1 ) { // 开头与结尾都不能出现点,点的前面与后面必须是数字 let strLen = checkVal.length; if ( checkVal.indexOf('.') === 0 || checkVal.indexOf('.') === strLen - 1 ) { return false; // 超过个数的限制的话 } else { return strLen <= 6; } // 没有小数点的话,那么就是全部数字进行匹配 } else if (!checkVal.match(dotReg)) { return IntegerReg.test(checkVal); } }, //银行卡验证 bankCard(iccid) { let initCard = iccid; var s1 = 0, s2 = 0; iccid = iccid.substring(0, iccid.length - 1); var reverse = ''; for (var i = iccid.length; i > 0; i--) { reverse += iccid.charAt(i - 1); } for (i = 0; i < reverse.length; i++) { var digit = parseInt(reverse.charAt(i), 10); if (i % 2 != 0) { // this is for odd digits, they are 1-indexed in the // algorithm s1 += digit; } else { // add 2 * digit for 0-4, add 2 * digit - 9 for 5-9 s2 += 2 * digit; if (digit >= 5) { s2 -= 9; } } } var sum = 10 - ((s1 + s2) % 10); if (sum === 10) { sum = 0; } return iccid + sum == initCard; } };