校验18位身份证号码(判断最后一位校验位和性别)

61 篇文章 14 订阅
订阅专栏

身份证号码组成

  

公民身份号码是一系列组合码,由十七位数字本体码和一位校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 

18位身份证最后一位校验码的计算方法

1、将身份证号码前17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:【7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2】

2、将这17位数字和系数相乘的结果相加

3、用加出来和除以11,看余数是多少?

4、余数只可能有【0-1-2-3-4-5-6-7-8-9-10】这11个数字。其分别对应的最后一位身份证的号码为【1-0-X-9-8-7-6-5-4-3-2】

5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2

举例: 某女生的身份证号码为【36073119960518294X】

①【(3*7)+(6*9)+(0*10)+(7*5)+(3*8)+(1*4)+(1*2)+(9*1)+(9*6)+(6*3)+(0*7)+(5*9)+(1*10)+(8*5)+(2*8)+(9*4)+(4*2)】= 376

② 376除以11等于34余2

③ 余数2对应【1-0-X-9-8-7-6-5-4-3-2】的校验码刚好是X

④ 该身份证号码正确

判断性别

判断身份证号码第17位,奇数代表男性, 偶数代表女性

【36073119960518294X】:4为偶数,女性

【53010219200508011X】:1为奇数, 男性

js校验身份证(校验位和性别)

function isTrueIdCard(idCard) {
  let mainLand = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}X)$)$/;
  let Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加权因子 
  let ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份证验证位值,10代表X 
  let sum = 0; // 声明加权求和变量 
  let remainder // 余数
  let lastCode = idCard[17] // 最后一位
  // 将最后位为x的验证码替换为10方便后续操作
  if (lastCode == 'x' || lastCode == 'X') {
    lastCode = 10;
  }

  // 校验身份证号码
  if (!mainLand.test(idCard)) {
    alert('身份证格式有误')
    return
  }

  // 校验身份证最后一位
  for (let i = 0; i < 17; i++) {
    // 循环遍历前17位,加权求和 
    let tempnum = idCard.substring(i, i + 1);
    sum += Wi[i] * tempnum;
  }
  // 得到余数
  remainder = sum % 11;
  // 判断校验位和对应验证位是否相等
  if (lastCode == ValideCode[remainder]) {
    alert('校验位正确')
  } else {
    alert('校验位错误')
  }

  // 判断性别
  let sexCode = idCard[16]
  if (sexCode % 2 == 0) {
    alert('女生')
  } else {
    alert('男生')
  }
}

isTrueIdCard('36073119960518294X')

 

js根据身份证号码判断性别和年龄
weixin_34162695的博客
12-10 1467
/**这是一个超实用的用js根据身份证号码判断性别男女的特效代码,详细看下面的*//**根据身份证号码判断性别15身份证号码:第7、8位为出生年份(两数),第9、10为出生月份,第11、12代表出生日18位身份证号码:第7、8、9、10为出生年份(四数),第11、第12为出生月份,第13、14代表出生日期,第17代表性别,奇数为男,偶数为女。*/function showBirt...
JavaScript验证18位身份证号码最后一位正确性的实现代码
10-25
主要介绍了JavaScript验证18位身份证号码最后一位正确性的实现代码,小编亲测有效,需要的朋友可以参考下
JS根据身份证号码获取性别
weixin_44854779的博客
08-08 4719
JS根据身份证号码获取性别
js校验身份证号码并填写出生日期和性别
yxkong的专栏
07-04 355
今天给证件号码加了个校验,18位的证件号码能读取人所在的省份和人员的出生日期,性别,代码如下<script type="text/javascript"> //给人的证件号码注册失去焦点校验的事件 $(function(){ $("#zjhm").blur(function(){ var zjlx=$("#zjlx").val(); ...
一个简单的JS身份证验证(很实用,JS函数和jsp页面都有)
念念不忘,必有回响
11-25 1484
首先JS函数 function isCardNo(card) { // 身份证号码为15或者18位,15时全为数字,18位17为数字,最后一位校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert...
js正则验证身份证号码(最后一位x不区分大小写)
m0_37711659的博客
01-29 6689
/** * 身份证号合法性验证 * 支持15和18位身份证号 * 支持地址编码、出生日期、校验位验证 */ function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ..
javascript 验证身份证完全版,根据身份证获取性别年龄
GUK
07-19 2377
1.验证身份证 var idcard=function (_v,item) { var area = { 11 : "北京", 12 : "天津", 13 : "河北", 14 : "山西", 15 : "内蒙古...
使用js验证身份证最后一位字符是否正确
chenmin_test的博客
08-26 394
function checkSfzh(sfzh){ let index_array = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; let sfzh_array = new Array(); let total = 0; let last_number; let start = 0; let end = 1; for(let i = 0;i < sfzh.length-1;i++){ let temp = sfzh.slice(.
PHP 18 身份证号码校验
Right! I'm Max Sky.
10-23 560
/** * @param string $id_no * * @return bool */ function idNoValidate(string $id_no): bool { if (strlen($id_no) !== 18) { return false; } $weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; $sum = 0; for ($i =
身份证号规则校验
copple的专栏
05-09 8620
我们国家目前公民身份证号为15或者18位,且最后一位可能出现字母X。其中, 前1、2数字表示:所在省份的代码; 第3、4数字表示:所在城市的代码; 第5、6数字表示:所在区县的代码; 第7-14数字表示:出生年、月、日; 第15、16数字表示:所在地的派出所的代码; 第17数字表示性别:奇数表示男性,偶数表示女性; 第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,用来检验身份证的正确性。 //假设18位身份证号码:41000119910101123...
一代15身份证二代18位身份证正则表达式校验.md
09-23
一代15身份证二代18位身份证正则表达式校验,带详细注释,每个字符注释,大厂通用
15和18位身份证JS校验的简单实例
10-21
下面小编就为大家带来一篇15和18位身份证JS校验的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
一个计算身份证号码校验位的Python小程序
12-23
S = Sum(Ai * Wi), i=0,…….16 (现在的身份证号码都是18位长,其中最后一位校验位,15身份证号码好像不用了) Ai对应身份证号码,Wi则为用于加权计算的值,它一串固定的数值,应该是根据某种规则得出的吧,...
用sql实现18位身份证校验代码分享 身份证校验位计算
12-15
身份证校验码的计算方法 1、将前面的身份证号码17数分别乘以不同的系数。...其分别对应的最后一位身份证号码为1 0 X 9 8 7 6 5 4 3 2; 代码如下:with t as(select ‘34052419800101001X’id from dual)select
PHP校验15和18位身份证号的类封装
12-18
如果强制要求是 18 的话,会比较好,因为 15 身份证号没有校验码,可以说,只要了解大概结构,随手都可以造出一系列身份证号码来。 当然,如果只是单纯的程序校验, 18 身份证号码也可以伪造,就是需要...
JS 根据身份证号获取年龄、性别、出生日期
最新发布
Jana Jing的分享
07-28 577
2.编码规则不同,第一代身份证在前6号码后没有完整出生年份,而二代的有完整的出生年份,一代身份证将年份前二省略。在最后一位数上,二代证加了校验码。二代证: 331303(县区代码)19870808 (出生年月)1412(尾数加校验码)一代证:331303(县区代码)870808(出生年月)141(尾数)1.编号数不同,第一代身份证为15号码,第二代证是18位号码
18位身份证校验
wang_zhij的博客
07-07 136
//java-校验18位身份证号 public static boolean checkIdCard18(String value) { if(value==null||value.length() !=18){ return false; } int[] arrExp =new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//加权因子 String[] arrValid =new String[]{"1",.
校验18位身份证号是否是有效的身份证
qingxiaowang1005的专栏
05-31 1605
/** * 该方法用于判断18位身份证号是否合法,依据:通过最后一位生成算法,计算最后一位的值,与原值比较。 * * @param id18 * 长度为18的身份证号 * @return 合法返回true */ public boolean isId18Legal(String id18) { boolean result = false;
js实现身份证验证功能
lch01122的博客
08-11 1935
代码】js实现身份证验证功能。
用java校验18位身份证号码
03-26
以下是Java代码,用于校验18位身份证号码: ``` public static boolean checkIdNumber(String idNumber) { // 18位身份证号码正则表达式,符合GB11643-1999标准 String regex = "^[1-9]\\d{5}(19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$"; // 判断身份证号码是否为空或不符合正则表达式 if (idNumber == null || !idNumber.matches(regex)) { return false; } // 判断身份证号码最后一位校验码是否正确 int[] factors = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; // 加权因子 char[] checkCodes = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; // 校验码 int sum = 0; // 加权和 for (int i = 0; i < 17; i++) { int digit = Character.getNumericValue(idNumber.charAt(i)); // 获取身份证号码数字 sum += digit * factors[i]; // 计算加权和 } int remainder = sum % 11; // 取模 char checkCode = checkCodes[remainder]; // 获取校验码 return (idNumber.charAt(17) == checkCode || idNumber.charAt(17) == Character.toUpperCase(checkCode)); // 判断校验码是否正确 } ``` 该方法的返回值为`true`表示身份证号码正确,返回值为`false`表示身份证号码不正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
169
原创
2314
点赞
9488
收藏
1078
粉丝
关注
私信
写文章

热门文章

  • 什么是跨域?跨域解决方法 433141
  • display:none和visibility:hidden两者的区别 121122
  • 微信小程序操作dom元素节点 wx.createSelectorQuery() 88532
  • JavaScript事件代理(事件委托) 69673
  • window.print() 前端实现网页打印详解 64264

分类专栏

  • 面试 1篇
  • 营销神器
  • TypeScript 5篇
  • React 1篇
  • Node 3篇
  • yarn 1篇
  • Electron 1篇
  • 前端开发 1篇
  • 算法 1篇
  • V8 1篇
  • HTML 9篇
  • CSS 13篇
  • JavaScript 61篇
  • JQuery 3篇
  • CSDN使用教程 1篇
  • 工具 7篇
  • 移动端 4篇
  • 微信小程序 3篇
  • 前端自动化工具 4篇
  • Git版本控制系统 2篇
  • 浏览器 14篇
  • HTTP协议 6篇
  • VUE 33篇
  • 计算机 16篇
  • 丁小厨成长之路 2篇

最新评论

  • vue中实现数组元素的上移和下移

    W_ppp: 大佬,如果每个div里的内容都是不一样的,是否可以用这个方法

  • window.print() 前端实现网页打印详解

    Candang147: 使用以上方法打印页面后,页面将会失去所有事件绑定关系,也就是说按钮不再是按钮了,你需要做的是重建页面或者 location.reload(); 一下

  • 三十分钟学会使用vue-router搭建单页应用(SPA)

    m0_74416116: 好文顶了

  • JavaScript事件代理(事件委托)

    居然占用名: >>把原本需要绑定在子元素的响应事件(click、keydown......)委托给父元素 这怎么就原本了,“原来”也不是你说的那样!

  • Node进程管理工具—pm2

    imdatouk: 那咋搞呢?怎么给他配置的

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Vue+Element UI 整合下拉目录树(popover+ tree+input)
  • 浏览器兼容性问题总结
  • Nginx 学习
2022年2篇
2021年28篇
2020年46篇
2019年59篇
2018年34篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Demi

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事诗经起名牛宝宝氏张姓起名牛年宝宝起名宜用字的起什么网名花卉企业起名起宝宝取名字网公司风水起名edg战队成员儿童子起名字姓李手上莫名起红点而且痒女孩子起名字大全免费计算机病毒的特征饰品起名店家三个人三天喝了三桶水九个人九天喝了几桶水是男孩还是女孩怎么起名三国宅行天下起名8画什么字红色的种子李姓男孩起名2018年属母亲节感恩话语适合起名的四字成语山海秘闻录上林赋原文小卖部怎么起名起名缺火缺土贝克汉姆简介daidoh什么是周记男孩子起名五行字中要有带属金字office2016激活少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化