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 相关文章推荐
关于文本限制字数的js代码
Apr 02 Javascript
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
Jan 19 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
May 20 jQuery
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 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
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
[00:59]PWL开团时刻DAY7——我在赶
2020/11/06 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python reduce 函数使用详解
2017/12/05 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
开学寄语大全
2014/04/08 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
个人委托书范文
2015/01/28 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
爱国教育主题班会
2015/08/14 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL