标签:regex return 校验 else idChars let 身份证 parseInt
const RegexUtils = { /** * 中文验证 */ checkCN(text: string): boolean { if (text) { let regex = /^[\u4E00-\u9FA5]+$/; return regex.test(text.trim()); } else { return false; } },/** * 手机号码格式验证 */ 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;
标签:regex,return,校验,else,idChars,let,身份证,parseInt 来源: https://www.cnblogs.com/wsj1/p/15803077.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。