在JavaWeb研发过程中为了获取有效的用户信息,校验其数据的有效性非常是必要,以下贴出在项目中用到的关于身份证的校验:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

            <head>

                  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>

                  <title>身份证校验</title>

                  <script type="text/javascript" src="./jquery-1.6.2.js"></script>

                  <script type="text/javascript">

                        function checkCertificateNo(){

                              var certificateNo = $("#certificateNo").val();//身份证号码

                              if(certificateNo.length != 18){

                                    alert("身份证号码无效,请使用第二代身份证!!!"); 

                              }else{

                                    var address = certificateNo.substring(0,6);//6位,地区代码

                                    var birthday = certificateNo.substring(6,14);//8位,出生日期

                                    var sequenceCode =  certificateNo.substring(14,17);//3位,顺序码:奇为男,偶为女

                                    var checkCode =  certificateNo.substring(17);//1位,校验码:检验位

                                    console.log("身份证号码:"+certificateNo+"、地区代码:"+address+"、出生日期:"+birthday+"、顺序码:"+sequenceCode+"、校验码:"+checkCode);



                                    var province={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:"澳门",91:"国外"};



                                    var year =  birthday.substring(0,4);   

                                    var month = birthday.substring(4,6);   

                                    var day = birthday.substring(6);

                                    var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day)); 

                                    if(province[parseInt(address.substr(0,2))] == null || (tempDate.getFullYear()!=parseFloat(year) || tempDate.getMonth()!=parseFloat(month)-1 || tempDate.getDate()!=parseFloat(day))){//这里用getFullYear()获取年份,避免千年虫问题

                                          alert("身份证号码无效,请又一次输入!!!");

                                    }else{

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

                                          var valideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值,当中10代表X

                                          var certificateNoArray =certificateNo.split("");// 得到身份证数组

                                          var sum = 0;// 声明加权求和变量

                                          if (certificateNoArray[17].toLowerCase() == 'x') {

                                                certificateNoArray[17] = 10;// 将最后位为x的验证码替换为10  

                                          }

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

                                               sum += weightedFactors[i] * certificateNoArray[i];// 加权求和   

                                        }

                                        valCodePosition = sum % 11;// 得到验证码所在位置

                                       if (certificateNoArray[17] == valideCode[valCodePosition]) {

                                              var sex = "男";

                                             if(sequenceCode%2==0){

                                                    sex = "女";

                                              }

                                             alert("身份证号码有效,性别为:"+sex+"!");

                                        } else {

                                             alert("身份证号码无效,请又一次输入!!!");

                                        }

                                   }

                             }

                        }

                   </script>

            </head>

            <body>

                  <input id = "certificateNo" name = "certificateNo" value = "61072919761109762X"/>
&nbsp;&nbsp;&nbsp;<input type="button" onclick="checkCertificateNo();" value = "開始校验"/>

            </body>

</html>

最严格的身份证校验(JavaScript版)的更多相关文章

  1. 完整的JavaScript版的信用卡校验代码

    function isValidCreditCard(type, ccnum) { if (type == "Visa") { // Visa: length 16, prefix ...

  2. JavaScript版EAN码校验算法

      <script type="text/javascript"> $(document).ready(function () { $("#btnCalc&q ...

  3. JavaScript版拼图小游戏

    慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...

  4. 篇二:JS身份证校验

    身份证校验 function identityCodeValid(code) { var city={11:"北京",12:"天津",13:"河北&q ...

  5. 前端优秀作品展示,JavaScript 版水果忍者

    <水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Rapha ...

  6. javascript日历控件——纯javascript版

    平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. < ...

  7. 在线聊天室的实现(1)--websocket协议和javascript版的api

    前言: 大家刚学socket编程的时候, 往往以聊天室作为学习DEMO, 实现简单且上手容易. 该Demo被不同语言实现和演绎, 网上相关资料亦不胜枚举. 以至于很多技术书籍在讲解网络相关的编程时, ...

  8. Powerbuilder编写身份证校验码

    public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ...

  9. java实现身份证校验

    原文来自:java教程网 题目:身份证校验   身份证校验   如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!   因为有人的身份证最后一位是"X"   实 ...

随机推荐

  1. 这是从word发的第一篇博客。

    喜欢做的事,怎么样都不会厌倦. 以前只知道office功能强大,但不太清楚到底还能干些啥,印象最深的是outlook了,自己也在用,挺好 今天偶然发现,word还能发布博客,真是太惊喜了 这算是一篇实 ...

  2. structDemo1

    structDemo1 # include <iostream.h> # include <malloc.h> enum EType{ One = ,Tow,Three }; ...

  3. [BZOJ 3531] [Sdoi2014] 旅行 【离线+LCT】

    题目链接:BZOJ - 3531 题目分析 题目询问一条路径上的信息时,每次询问有某种特定的文化的点. 每个点的文化就相当于一种颜色,每次询问一条路径上某种颜色的点的信息. 可以使用离线算法, 类似于 ...

  4. PS仿制图章

    颜色总不对,和周围不太搭配,这时候把流量调小点,然后用渐变工具.自己实践所得.

  5. bzoj1559

    自动机上状压dp,把单词是否存在压成二进制位注意这里面某些单词会包含其他单词,所以某些自动机上有些状态点对应多个二进制位方案只要再顺着有方案的状态搜一遍即可 ..,'a'..'z'] of longi ...

  6. 一起啃PRML - 1.2 Probability Theory 概率论

    一起啃PRML - 1.2 Probability Theory @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ A key concept in t ...

  7. UVA_303_Pipe_(计算几何基础)

    描述 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page ...

  8. POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)

    描述 http://poj.org/problem?id=1065 木棍有重量 w 和长度 l 两种属性,要使 l 和 w 同时单调不降,否则切割机器就要停一次,问最少停多少次(开始时停一次). Wo ...

  9. zabbix通过jmx监控tomcat

    Zabbix版本: Zabbix 3.0.2 一.服务端配置 1.安装jdk(版本1.7.0_79) 安装与配置比较简单,过程省略.执行java -version命令,出现类似界面表示成功.   2. ...

  10. EasyUI的增删查改(后台ASP.NET)

    转自:http://www.cnblogs.com/dedeyi/archive/2013/04/22/3035057.html 某某人曾经跟我说,你们做系统不就是增删查改吗. 是啊,很多时候我们就是 ...