写一个正则验证身份证是否正确
身份证验证包括格式验证和校验码验证两部分。以下是一个基本的身份证验证正则表达式的示例,以及一个用于验证身份证校验码的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);
}
请注意,这些方法主要用于前端验证,并不能完全保证身份证号码的真实性。在服务器端,你可能还需要进行更严格的验证,例如检查出生日期是否有效、地区码是否存在等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现