身份证号规则校验

article/2025/1/14 1:13:26

 我们国家目前公民身份证号为15位或者18位,且最后一位可能出现字母X。其中,

15位身份证为我国第一代身份证,基本已经退出历史舞台。其规则如下:

前1、2位数字表示:所在省份的代码;

第3、4位数字表示:所在城市的代码;

第5、6位数字表示:所在区县的代码;

第7-12位数字表示:出生年(缺省18,19,20这种)、月、日;

第13-14位数字表示:出生顺序编号;

第15位数字表示性别:奇数表示男性,偶数表示女性;

注:15位没有X字母

18位身份证为我国第二代身份证,也就是目前我们使用的。其规则如下:

前1、2位数字表示:所在省份的代码;

第3、4位数字表示:所在城市的代码;

第5、6位数字表示:所在区县的代码;

第7-14位数字表示:出生年、月、日;

第15、16位数字表示:所在地的派出所的代码;

第17位数字表示性别:奇数表示男性,偶数表示女性;

第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,用来检验身份证的正确性。根据本体码,通过采用ISO 7064:1983,MOD 11-2校验码系统计算出校验码。算法可参考下文。前面有提到数字校验码,我们知道校验码也有X的,实质上为罗马字符X,相当于10

18位身份证号校验码生成规则:

将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。

加权因子:

取余加权公式:

S= sum(Ai + Wi),i = 0,1,2 ....,16,对应上表格1-17位置

Ai: 表示身份证上的1-17的数字

Wi: 表示上图对应的加权因子

取模公式:Y = mod(S,11)

取模后,余数对应的校验码:

例:11010519491231002X

求最后一位校验码过程如下:

 校验代码如下(Java):

/*** 身份证号码验证* @param idCardNumber 身份证号码* @return boolean*/
public static boolean isIdCardNumber(String idCardNumber) {if (idCardNumber == null || "".equals(idCardNumber)) {return false;}//正则表达式String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +"(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";boolean matches = idCardNumber.matches(regularExpression);//判断第18位校验值if (matches) {if (idCardNumber.length() == 18) {try {char[] charArray = idCardNumber.toCharArray();//前十七位加权因子int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//这是除以11后,可能产生的11位余数对应的验证码String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};int sum = 0;for (int i = 0; i < idCardWi.length; i++) {int current = Integer.parseInt(String.valueOf(charArray[i]));int count = current * idCardWi[i];sum += count;}char idCardLast = charArray[17];int idCardMod = sum % 11;if (idCardY[idCardMod].equals(String.valueOf(idCardLast).toUpperCase())) {return true;} else {return false;}} catch (Exception e) {log.error("身份证号规则校验异常,err={}",e.getMessage());return false;}}}return matches;
}


http://chatgpt.dhexx.cn/article/w2IhhKWj.shtml

相关文章

opencv识别身份证号

opencv 识别身份证号 python模块 opencvpytesseractPIL 1.模块安装 1.1 opencv安装 通过pip进行安装&#xff0c;在此不再叙述 注意安装版本&#xff0c;以下是python3的安装方式 pip install opencv-python1.2 pytesseract安装 通过pip进行安装&#xff0c;在此不再叙述…

[转]【读书笔记】《俞军产品方法论》——产品经理的枕边书

作者简介 俞军&#xff0c;1997年毕业于同济大学化学系。曾任百度产品副总裁、首席产品架构师&#xff0c;网名“搜索引擎9238”&#xff0c;有“百度贴吧之父”之称。滴滴前高级产品副总裁。 内容简介 摘抄语录 我的产品潜力和优势大约只来自三方面&#xff1a;第一&#xff0…

话说产品方法论——需求与用户研究

开一个坑&#xff0c;结合自身经历和现在在看的一些书&#xff0c;将一些基础的产品方法论总结出来&#xff0c;与大家交流的同时鞭策自己。 作为0岁的产品经理&#xff0c;我们在学习产品方法论时&#xff0c;容易偏重于产品设计的理论&#xff0c;对产品设计的喜爱也许是多数…

CRM产品方法论

导语&#xff1a;CRM&#xff08;客户关系管理&#xff09;是一种企业与现有客户及潜在客户之间关系互动的管理系统&#xff0c;通过对客户数据的历史积累和分析&#xff0c;CRM可增进企业与客户之间的关系&#xff0c;从而增加企业销售收入和提高客户留存率。本文作者从目标、…

《俞军产品方法论》:一个产品学派的诞生

www.pmcaff.com 本文为作者 一只特立独行的Eric 于社区发布 “我有时下班打个顺风车&#xff0c;周围几大公司&#xff08;滴滴、百度、新浪、网易&#xff09;的产品经理都会来接我。因为我用的是真名。”俞军2017年接受PingWest采访时说道。 作为中国最有影响力的产品经理之一…

AI产品方法论之“由用户来完成AI产品设计的最后一公里”

前言&#xff1a;AI产品落地&#xff0c;非常有意思&#xff0c;也非常有难度&#xff0c;究其原因&#xff0c;除了AI技术、产品、行业、人才、用户等各方面都还没成熟&#xff0c;还有一个很重要的问题&#xff0c;就是我们还没有将互联网时代的产品方法论升级成为"AI产…

产品经理 - 产品设计方法论需求分析部分

整体 – 产品设计方法论思维导图 个人整理&#xff0c;存在异议大家可以讨论下 需求分析方法论 需求分析为需求收集的延展&#xff0c;需求收集后即需进行需求分析&#xff0c;拆解需求后方可业务落地&#xff0c;此处我将其分为两步&#xff0c;一是主动发散型需求分析&am…

产品经理方法论

企业以产品为媒介&#xff0c;与用户进行价值交换&#xff1b;产品经理要能在实践中理解用户模型和交易模型&#xff0c;设计产品促成更多交易&#xff0c;以创造有利可图的用户价值。 1、企业、用户、产品的关系 用户价值和商业价值的关系&#xff0c;是企业以产品为媒介&…

《俞军产品方法论》- 站在更高的角度来拓展产品经理的内涵和边界

关于作者 俞军&#xff0c;互联网产品大神级人物。他是早年百度唯一的产品经理&#xff0c;主持了百度搜索这款产品的无数次进化&#xff0c;并主持设计了百度贴吧、百度 知道等世界级创新产品&#xff0c;后来又成为滴滴出行的产品负责人。他的 “ 俞军产品经理十二条 ” &a…

产品方法论—如何竞品分析

一、概要 什么是竞品分析&#xff0c;单从组词法来说&#xff0c;竞品分析就是对竞争产品的分析&#xff0c;接下来将详细讲述到底应该如何进行竞品分析… 1、什么是竞品分析 在两个或者多个竞争产品之间&#xff0c;他们有什么样的商业模式&#xff0c;有什么样的定位&…

《产品方法论》读书笔记

写在前面&#xff1a;本文仅仅是根据个人阅读习惯或个人有启发之处所记录的笔记&#xff0c;不代表该书的重点哦>o< 全书内容的简单总结 企业以产品为媒介&#xff0c;与用户进行价值交换&#xff1b;产品经理要能在实践中理解用户模型和交易模型&#xff0c;设计产品促…

产品经理 - 产品设计方法论业务落地部分_包括流程产品文档方法论需求设计方法论

整体 - 产品设计方法论思维导图 个人整理&#xff0c;存在异议大家可以讨论下 业务落地方法论 在进行了需求收集以及需求分析后&#xff0c;针对收集到的需求以及对应的分析结论后&#xff0c;需针对当前的需求点进行开发落地&#xff0c;核心即为两点&#xff0c;需求设计…

产品方法论(三)

《结网》系列读书笔记 这本书已经被陆续的读完了&#xff0c;总结总是落后半拍&#xff0c;坏处是容易遗漏细节&#xff0c;不过这样也有好处&#xff1a;那就是总结思考&#xff0c;把对我印象最深的写出来。 产品经理的工作流程 检查和体验产品 腾讯的pony ma不只是作为ce…

以产品当笔,与世界对话——《俞军-产品方法论》

什么是产品经理&#xff1f; 1.历史上的产品经理 消费时代的产品经理 1926年&#xff0c;宝洁推出了一款叫卡玫尔&#xff08;Camay&#xff09;的香皂&#xff0c;跟宝洁公司自家的另一款象牙牌&#xff08;Ivory&#xff09;香皂很相似&#xff0c;但销量一直不佳。 象牙皂…

「产品读书」俞军产品方法论

在阅读这本书之前&#xff0c;第一个能想到的不相上下的产品书籍就是网易的《幕后产品》&#xff0c;对于我来说&#xff0c;网易的产品一直是我最为钦佩和喜欢的&#xff0c;但是互联网界的产品名声最大的除了张小龙&#xff0c;我估计就是俞军了&#xff0c;读这本书之前我提…

产品设计---产品从0到1,阐述各阶段的产品方法论

产品从0到1&#xff0c;阐述各阶段的产品方法论 产品分析的“五要素法”是什么&#xff1f;需求采集的“Z字采集法”又是什么&#xff1f;如何用“KANO模型”对需求进行分类及优先排序&#xff1f;如何确定MVP&#xff1f;“Hooked模型”是如何让用户对产品上瘾的&#xff1f;…

【centos7x86】安装源 设置基础软件仓库时出错 解决办法

设置阿里源&#xff0c;手敲下面的地址&#xff0c; 更新 &#xff1a; 现在需要勾选https&#xff0c;http取消了

CentOS8.3安装时安装源设置基础软件仓库时出错

报错如下&#xff1a;安装源设置基础软件仓库时出错 使用的iso镜像是CentOS-8.3.2011-x86_64-boot.iso&#xff0c;在阿里云的镜像中下载的。 下载地址&#xff1a;CentOS-8.3.2011-x86_64-boot.iso 解决方案&#xff1a; 首先设置好网络和主机名&#xff0c;确保能连接网络 …

安装 centos8 设置基础软件仓库时出错

安装时没截图 找个centos7的图,将URL换成下方自己的版本 版本 8 mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/版本 8.2.2004 mirrors.aliyun.com/centos/8.2.2004/BaseOS/x86_64/os/版本 8.3.2011&#xff08;目前最新&#xff09; mirrors.aliyun.com/centos/8.3.2011/…

vmware centos设置基础软件仓库时出错error set up base repository

如果是centOS8图片中的7修改为8 http://mirrors.aliyun.com/centos/7/os/x86_64 如果是centos8 也是一样的 http://mirrors.aliyun.com/centos/7/os/x86_64