/** * 手机号码格式验证 */ checkMobile(mobile: string): boolean { if (mobile) { let regex = /^1[3-9]\d{9}$/; return regex.test(mobile.trim()); } else { return false; } },
/** * 邮箱格式验证 */ checkEmail(email: string): boolean { let result: boolean; if (email) { let regex = /^([a-zA-Z0-9]+[_|.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; result = regex.test(email.trim()); } else { result = false; } return result; },
/** * 字母+数字 */ checkLetterAndNumber(value: string) { if (value) { let regex = /^[a-zA-Z0-9]+$/; return regex.test(value.trim()); } else { return false; } },
checkBank(value: string) { if (value) { let regex = /^[0-9]+$/; return regex.test(value.trim()); } else { return false; } },
isLeapYear(year: number): boolean { if (isNaN(year)) { // 非数字 return false; } else { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } },
/** * 身份证号码格式验证 */ checkIdCard(idCardNum: string): boolean { let prov = { 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: '国外', }; if (!prov[parseInt(idCardNum.substr(0, 2))]) { // 省份检验 return false; } let regExp; let idChars = idCardNum.split(''); switch (idCardNum.length) { case 15: // 15位身份证号检测 if (this.isLeapYear(parseInt(idCardNum.substr(6, 2)) + 1900)) { // 闰年 regExp = /^[1-9][0-9]{5}[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}$/; } else { // 平年 regExp = /^[1-9][0-9]{5}[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}$/; } return regExp.test(idCardNum); case 18: // 18位身份号码检测 if (this.isLeapYear(parseInt(idCardNum.substr(6, 4)))) { // 闰年 regExp = /^[1-9][0-9]{5}[1-9][0-9]{3}((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 { // 平年 regExp = /^[1-9][0-9]{5}[1-9][0-9]{3}((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 (regExp.test(idCardNum)) { // 基本校验 let modulus, checkCodeList = '10X98765432'; let sum, code; sum = (parseInt(idChars[0]) + parseInt(idChars[10])) * 7 + (parseInt(idChars[1]) + parseInt(idChars[11])) * 9 + (parseInt(idChars[2]) + parseInt(idChars[12])) * 10 + (parseInt(idChars[3]) + parseInt(idChars[13])) * 5 + (parseInt(idChars[4]) + parseInt(idChars[14])) * 8 + (parseInt(idChars[5]) + parseInt(idChars[15])) * 4 + (parseInt(idChars[6]) + parseInt(idChars[16])) * 2 + parseInt(idChars[7]) + parseInt(idChars[8]) * 6 + parseInt(idChars[9]) * 3; // 计算校验位 modulus = sum % 11; code = checkCodeList.substr(modulus, 1); // 找到校验位 return code == idChars[17]; } else { return false; } default: return false; } },
/** * 金额格式验证:不能为负数,保留两位小数 */ checkAmount(amount: string): boolean { if (amount) { const regex = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0)$)|(^[0-9]\.[0-9]([0-9])?$)/; return regex.test(amount.trim()); } else { return false; } },
//校验数字加字母 checkNumberAndLetter(str: string): boolean { const re = /^[0-9a-zA-Z]*$/; //判断字符串是否为数字和字母组合 if (!re.test(str)) { return false; } else { return true; } },
// 一种类型的密码 oneTypePwdRegex: /(?!^[0-9]{8,20}$)(?!^[a-z]{8,20}$)(?!^[A-Z]{8,20}$)^[0-9A-Za-z\!\@\#\$\%\^\&\*\(\)\_\-\+\=]{8,20}$/g, // 两种类型的密码 twoTypePwdRegex: /(?!^[0-9a-zA-Z]{8,20}$)^[0-9A-Za-z\!\@\#\$\%\^\&\*\(\)\_\-\+\=]{8,20}$/g, };
export default RegexUtils;