身份证验证包括格式验证和校验码验证两部分。以下是一个基本的身份证验证正则表达式的示例,以及一个用于验证身份证校验码的JavaScript函数。
- 格式验证:中国的身份证号码长度为18位,由17位数字和一位校验码(数字或X)组成。以下是一个简单的正则表达式,用于验证身份证号码的基本格式:
function isValidIdFormat(id) {const regex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][0-9])|30|31)\d{3}([0-9]|X)$/;return regex.test(id);
}
这个函数会检查输入的身份证号码是否符合基本格式。
- 校验码验证:中国身份证号码的最后一位是校验码,用于验证身份证号码的有效性。以下是一个JavaScript函数,用于验证身份证的校验码:
function isValidIdChecksum(id) {if (!isValidIdFormat(id)) {return false;}const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];const parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];let sum = 0;let index = 0;for (let i = 0; i < id.length - 1; i++) {sum += parseInt(id[i]) * factors[index++];}const remainder = sum % 11;return parity[remainder] === id[17].toUpperCase();
}
这个函数首先检查身份证号码是否符合基本格式,然后计算校验码,并与身份证号码的最后一位进行比较。
你可以将这两个函数结合起来使用,以全面验证身份证号码的有效性:
function isValidId(id) {return isValidIdFormat(id) && isValidIdChecksum(id);
}
请注意,这些方法主要用于前端验证,并不能完全保证身份证号码的真实性。在服务器端,你可能还需要进行更严格的验证,例如检查出生日期是否有效、地区码是否存在等。