javascript实现根据身份证号读取相关信息


Posted in Javascript onDecember 17, 2014

公民身份号码由六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码组成。

地址码 前两位表示省,中间两位表示市,后两位表示县

顺序码 表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。

校验码 是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

校验码计算方法:
    1)将前面的身份证号码17位数分别乘以不同的系数,从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;
    2)将这17位数字和系数相乘的结果相加,用加出来和除以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。

身份证号合法性验证  支持15位和18位身份证号 支持地址编码、出生日期、校验位验证

<div style="padding:20px 40px;">

        <h1 style="font-size:20px;color:#999;">身份证查询</h1>

        <input type="text" placeholder="输入身份证号" id="code">

        <input type="button" value="查询" id="btn">

        <p id="home"><strong>籍    贯:</strong><span></span></p>

        <p id="birthday"><strong>出生日期:</strong><span></span></p>

        <p id="sex"><strong>性    别:</strong><span></span></p>

    </div>

    <script type="text/javascript">

        //去掉字符串头尾空格   

        var home='',birthday='',sex='';

        function trim(str) {   

            return str.replace(/^\s*|\s*$/g, "");   

        }

        //验证身份证

        function IdentityCodeValid(code) {

            code=trim(code);

            var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门"};    

            if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){

                alert("身份证号格式错误");

                home='',birthday='',sex='';

                return false;

            }

            if(!city[code.substring(0,2)]){

                alert("地址编码错误");

                home='',birthday='',sex='';

                return false;

            }

            if(code.length == 18){    //18位身份证需要验证最后一位校验位

                var codeArr = code.split('');        

                var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];    //加权因子                

                var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];                        //校验位

                var sum = 0;

                for (var i = 0; i < 17; i++){

                    sum += codeArr[i] * factor[i];

                }

                if(parity[sum % 11] != codeArr[17]){

                    alert("校验位错误");

                    home='',birthday='',sex='';

                    return false;

                }                

            }

            //省份

            home = city[code.substring(0,2)];    

            //生日

            birthday = code.substring(6,10)+'年'+code.substring(10,12)+'月'+code.substring(12,14)+'日';

            //性别

            if(code.length==15){

                sex = code.substring(14,15)%2==0 ? '女':'男';

            }else if(code.length==18){

                sex = code.substring(14,17)%2==0 ? '女':'男';

            }

        }

           //输出结果

        document.querySelector('#btn').onclick=function(){

            var code=document.querySelector('#code').value;

            IdentityCodeValid(code);

            document.querySelector('#home span').innerHTML=home;

            document.querySelector('#birthday span').innerHTML=birthday;

            document.querySelector('#sex span').innerHTML=sex;

        }

    </script>

本文主要是根据公民身份证的规则,读取相关的身份信息,非常方便实用,推荐给大家。

Javascript 相关文章推荐
JavaScript 设计模式学习 Factory
Jul 29 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
如何使用bootstrap框架 bootstrap入门必看!
Apr 13 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
小程序实现带年月选取效果的日历
Jun 27 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
May 08 Javascript
微信小程序input抖动问题的修复方法
Mar 03 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 #Javascript
javascript操作数组详解
Dec 17 #Javascript
node.js中的fs.appendFileSync方法使用说明
Dec 17 #Javascript
javascript实现节点(div)名称编辑
Dec 17 #Javascript
node.js中的fs.createReadStream方法使用说明
Dec 17 #Javascript
node.js中的fs.createWriteStream方法使用说明
Dec 17 #Javascript
node.js中的fs.futimesSync方法使用说明
Dec 17 #Javascript
You might like
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
python连接mysql实例分享
2016/10/09 Python
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python实现合并两个列表的方法分析
2018/05/28 Python
python随机数分布random测试
2018/08/27 Python
python write无法写入文件的解决方法
2019/01/23 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
EJB实例的生命周期
2016/10/28 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
董事长秘书职责
2014/01/31 职场文书
有趣的广告词
2014/03/18 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
四议两公开实施方案
2014/03/28 职场文书
委托书的写法
2014/08/30 职场文书
2014年个人委托书范本
2014/10/13 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python