写一个身份证号码的校验,js,正则

动态 未结 0 6
邮箱用户_lh582
邮箱用户_lh582 LV1 昨天 18:15 发表
要校验一个身份证号码是否有效,可以通过正则表达式来检查其格式,然后通过计算校验码来验证其正确性。下面是一个JavaScript函数,它首先使用正则表达式检查身份证号码的格式,然后计算校验码以验证身份证号码的有效性。 ```javascript function validateIDCard(idCard) { // 正则表达式校验身份证号格式 const regex = /^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/; if (!regex.test(idCard)) { return false; // 身份证号码格式不正确 } // 系数数组 const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 校验码数组 const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; // 计算校验码 let sum = 0; for (let i = 0; i < 17; i++) { sum += idCard[i] * factors[i]; } let checkIndex = sum % 11; let checkCode = checkCodes[checkIndex]; // 比较校验码 return idCard[17].toUpperCase() === checkCode; } // 示例 console.log(validateIDCard("440308199901101512")); // 输出:true 或 false ``` 这个函数首先定义了一个正则表达式来匹配身份证号码的格式,然后定义了系数和校验码数组,用于计算校验码。最后,函数通过遍历身份证号码的前17位数字,并乘以相应的系数,计算出总和,再通过总和计算出校验码,并与身份证号码的最后一位(校验码)进行比较。如果匹配,则身份证号码有效,返回`true`;否则返回`false`。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复