中国居民身份证校验
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-cn-id-validator。
技能介绍
要解决什么问题
在用户注册、实名流程或年龄门禁里,你往往要在服务端或脚本里判断一串号码是不是合法的居民身份证号,而不是只靠前端正则。15 位(1985–1999 常用)和 18 位(1999 至今)规则不同:18 位还带校验位(末位可为 X),单靠长度和数字形态很容易误放过无效日期或错误校验码。
技能如何工作
本技能面向 Python 3,仅标准库,无第三方依赖(MIT-0)。核心能力包括:
- 格式校验:长度必须为 15 或 18 位;出生日期段必须是合法公历日期(18 位为
YYYYMMDD,15 位为YYMMDD并按 19xx 理解)。 - 18 位校验位:按国标算法验证第 18 位(0–10,其中 10 表示
X)。 - 信息抽取:从号码中解析出生日期、性别(顺序码奇数为男、偶数为女)、地区码(前 6 位,如
110000北京、440000广东等常见编码可作对照)。 - 地区码:文档说明目前以格式为主,未做完整行政区划库校验。
典型接入场景包括注册表单校验、业务流程中的身份格式检查、按年龄做访问控制,以及脱敏前提下的 demographic 分析。
适用边界
工具只验证格式与校验算法,不对接公安或任何政府库,不能证明「真人真证」。地区码不做全量有效性核验;输出仅供业务侧参考,合规实名仍需走官方渠道。
使用场景
- 在用户注册接口里,对提交的 18 位身份证号做校验位与出生日期校验,拦截格式错误再入库
- 实名或开户流程中,用 15/18 位规则批量筛查导入表格里的证件号是否可解析
- 从合法身份证号中解析出生日期,用于计算是否满 18 岁再放行敏感功能
- 脱敏后的证件字段分析中,按前六位地区码与顺序码规则统计性别与地域分布
适合人员
- 负责会员/账号注册后端的工程师,需要在服务端复现国标校验位而非只依赖前端
- 做数据清洗的分析师,要从历史库里的身份证号批量解析出生日与性别并标记异常记录
- 搭建企业内部审批或人事系统的实施同学,要在录入环节即时提示证件号长度或日期段错误
- 写合规相关脚本的工程师,只需格式与算法层面的校验并明确不做公安库核验