// 密码正则校验 export function regPassword(password) { const reg = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{};:,<.>]).{8,26}$/ return reg.test(password) } export function checkIdCardNumber(rule, idcard, callback) { if (idcard === undefined || idcard === '' || idcard === null) { return callback(new Error('请输入身份证号码')) } var area = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: '新疆', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外' } var ereg var idcard_array = idcard.split('') // @ts-ignore if (area[parseInt(idcard.substr(0, 2))] === null) return callback(new Error('身份证地区非法')) switch (idcard.length) { case 18: if ( parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0) ) { ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/ //闰年出生日期的合法性正则表达式 } else { ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/ //平年出生日期的合法性正则表达式 } if (ereg.test(idcard)) { var S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 var Y = S % 11 var M = 'F' var JYM = '10X98765432' M = JYM.substr(Y, 1) if (M == idcard_array[17]) return callback() else return callback(new Error('身份证号码校验错误')) } else return callback(new Error('身份证号码出生日期超出范围或含有非法字符')) default: return callback(new Error('身份证号码位数不对')) } } export function checkPhone(rule, value, callback) { let reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/ if (!value) { return callback(new Error('手机号码不能为空')) } else if (!reg.test(value)) { return callback(new Error('手机号格式不正确')) } else { callback() } } // 过滤手机输入的特殊字符 export function filterInput(value) { value = String(value) return value.replace(/[^\u4E00-\u9FA5A-Za-z0-9_\-\s\(\)!@#$%^&*()-=+{};:,<.>/?|\\[\]~,。、;?`]/g, '') }