(根据常见身份证验证逻辑模拟,非原盛大通行证代码)
身份证号码验证需符合中国国家标准(GB 11643-1999),通常包含以下校验环节:
格式校验
通过正则表达式验证基本格式,包括:
function checkIDFormat(id) { const reg = /^[1-9]d{5}(19|20)d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]d|3[0-1])d{3}[dX]$/i; return reg.test(id); }
校验码计算
根据ISO 7064:1983标准,通过加权求和与模11校验验证末位字符:
function validateCheckCode(id) { const weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; const checkCodeMap = ['1','0','X','9','8','7','6','5','4','3','2']; let sum = 0; for (let i=0; i<17; i++) { sum += parseInt(id[i]) * weight[i]; } return id[17].toUpperCase() === checkCodeMap[sum % 11]; }
数据隐私保护
410322*******123X
) 防御反面输入
function sanitizeInput(id) { return id.replace(/[^0-9Xx]/g, ''); // 过滤非规字符 }
交互提示优化
专业性(Expertise)
权威性(Authoritativeness)
可信度(Trustworthiness)
function validateIDCard(id) { // 1. 输入净化 const cleanId = sanitizeInput(id); // 2. 格式校验 if (!checkIDFormat(cleanId)) return { valid: false, reason: "格式错误" }; // 3. 校验码验证 if (!validateCheckCode(cleanId)) return { valid: false, reason: "校验码错误" }; // 4. 扩展校验(可选) if (!checkAreaCode(cleanId.substring(0,6))) { return { valid: false, reason: "行政区划码无效" }; } return { valid: true }; }
注:本文代码为技术演示,与盛大网络无关联,实际开发请遵循最新法律规范。