首页 › 编程开发 › 身份证号码校验
🔧

身份证号码校验

校验身份号码校验位并解析归属省份、出生日期、性别与年龄

号码解读
批量校验
输入身份号码

演示号码为按规则构造的样例,仅用于查看解析过程。号码只在本机浏览器内计算,不上传、不缓存、不写入任何记录。

批量校验

工具介绍

「这个号码对不对」和「这个号码哪里不对」是两个问题。本工具不只给出通过与否,而是把 18 位号码拆开、把校验位的乘加过程逐位列出来,让录入错误能被定位而不是只被拒绝:

  • 校验位验证:按 GB 11643-1999 的加权取模算法重算第 18 位,并显示应有的正确值
  • 逐位计算表:17 位数字、对应权值、逐项乘积、加权和、除以 11 的余数与映射结果全部展开
  • 四段结构拆解:6 位地址码、8 位出生日期码、3 位顺序码、1 位校验位分色高亮
  • 归属与个人信息:地址码前两位对应省级行政区,出生日期码还原生日、周岁、生肖,顺序码奇偶给出性别
  • 日期合法性:识别 2 月 30 日、13 月、闰年错位等「格式对但日期不存在」的号码
  • 15 位老号支持:自动补 19 升为 18 位并给出升位后的完整号码
  • 批量校验:一次粘贴多个号码,输出通过数量、归属、生日、性别与应改校验位的修正建议

使用场景

  • 表单开发与数据迁移时验证用户填写的号码格式是否合法
  • Excel 名单清洗,批量筛出抄错、漏位、校验位不符的记录
  • 核对亲友或历史资料中的 15 位老身份证号
  • 理解号码每一段的含义,判断归属省份与年龄区间
  • 排查「明明是对的号码却校验不过」的末位 X 与空格问题

校验位算法(可直接手算)

步骤规则
① 取权值7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
② 逐位相乘求和前 17 位数字分别乘以对应权值后相加,得到加权和 S
③ 取余Y = S mod 11
④ 映射校验码0→1 1→0 2→X 3→9 4→8 5→7 6→6 7→5 8→4 9→3 10→2
⑤ 对比映射结果与第 18 位一致即通过;余数为 2 时校验码是罗马数字 X,不要写成乘号或加号

常见问题

  • 校验通过就代表号码真实存在吗?不代表。校验位只能发现录入错误,任何满足加权取模规则的数字串都能通过校验,真实性需由公安人口信息系统核验
  • 为什么不解析到市和县?前 6 位中的 3—4 位是地市码、5—6 位是区县码,需要完整的 GB/T 2260 区划表;且区划会随撤县设区调整,早年发号的区划名可能已不存在,本工具只保证省级判读准确
  • 顺序码为什么能看性别?顺序码是同一日同一地出生者的排序号,第 17 位奇数分配给男性、偶数分配给女性,这是标准规定而非经验规律
  • 港澳台居民号码怎么算?港澳台居民居住证同样使用 18 位规则与同一套校验算法,地址码为 81、82、83 开头
  • 15 位号码还能用吗?第一代 15 位号码缺少出生世纪与校验位,已在换证时统一升为 18 位,本工具的升位结果仅用于核对历史资料

需要隐藏名单中的敏感号码请使用 隐私信息遮掩;要把号码批量导出为二维码或条码做物料请使用 二维码生成 与 条形码生成;校验算法本身是加权和取模,与 银行卡校验 的 Luhn 思路可以对照理解。所有计算在你本机浏览器里完成,号码不会发送到服务器。