`
zhuwei2008
  • 浏览: 83475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js 检测身份证

    博客分类:
  • java
阅读更多

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>校验身份证</title>
    <script>
     //校验身份证
  function checkIdcard(idcard) {
      var Errors = new Array(
              "true",
              "身份证号码位数不对!",
              "身份证号码出生日期超出范围或含有非法字符!",
              "身份证号码校验错误!",
              "身份证地区非法!"
              );
      var area = {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 idcard,Y,JYM;
      var S,M;
      var idcard_array = new Array();
      idcard_array = idcard.split("");
      //地区检验
      if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4];
      //身份号码位数及格式检验
      switch (idcard.length) {
          case 15:
              if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 )) {
                  ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;
                  //测试出生日期的合法性
              } else {
                  ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;
                  //测试出生日期的合法性
              }
              if (ereg.test(idcard)) return Errors[0];
              else return Errors[2];
              break;
          case 18:
          //18位身份号码检测
          //出生日期的合法性检查
          //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
          //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
              if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0 )) {
                  ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;
                  //闰年出生日期的合法性正则表达式
              } else {
                  ereg = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;
                  //平年出生日期的合法性正则表达式
              }
              if (ereg.test(idcard)) {//测试出生日期的合法性
                  //计算校验位
                  S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
                          + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
                          + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
                          + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
                          + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
                          + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
                          + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
                          + parseInt(idcard_array[7]) * 1
                          + parseInt(idcard_array[8]) * 6
                          + parseInt(idcard_array[9]) * 3;
                  Y = S % 11;
                  M = "F";
                  JYM = "10X98765432";
                  M = JYM.substr(Y, 1);
                  //判断校验位
                  if (M == idcard_array[17].toUpperCase()) return Errors[0]; //检测ID的校验位
                  else return Errors[3];
              }
              else return Errors[2];
              break;
          default:
              return Errors[1];
              break;
      }
  }
  function check()
  {
   var card=document.getElementById("card");
   var result=checkIdcard(card.value);
   if(result=='true')
    document.getElementById("info").innerHTML="<font color='blue'>身份证校验正确</font>";
   else
    document.getElementById("info").innerHTML="<font color='red'>"+result+"</font>";
  }
    </script>
  </head>
  <body>
    身份证:<input type="text" id="card" size="20">&nbsp;&nbsp;&nbsp;<input type="button" value="校验身份证" onclick="check();"><br><br>
    <div id="info"></div>
  </body>
</html>

分享到:
评论
1 楼 xx0326 2011-12-04  
谢谢。楼主。哦。

相关推荐

    身份证验证js

    自我总结的前端关于身份证验证的js文件,可帮助前端人员快速验证输入内容时否符合身份证规定。

    身份证号验证程序javascript

    ### 身份证号验证程序JavaScript知识点解析 #### 一、背景介绍 在现代Web开发中,表单验证是一项非常重要的任务,它确保用户输入的数据符合预期格式与规则。身份证号码验证作为其中的一个典型场景,对于确保数据的...

    js校验身份证号和银行卡号

    在JavaScript(简称js)编程中,验证身份证号和银行卡号是非常常见的需求,特别是在网页表单提交或者用户注册等场景。身份证号码验证确保了输入的有效性,防止非法或错误的输入,而银行卡号验证则可以保护用户的金融...

    JS 身份证验证程序

    JavaScript(简称JS)是一种广泛用于网页和网络应用的编程语言,尤其在客户端脚本中扮演着重要角色。本文将深入探讨如何使用JavaScript进行身份证验证,包括有效性检查和区域信息识别。 身份证验证是确保用户输入的...

    js身份证号的验证真伪和地区

    然而,它也存在一定的局限性,例如无法检测身份证号码是否已被合法持有者使用,也不能防止身份信息被盗用。因此,在高安全性要求的场景下,还需结合其他身份验证手段。 综上所述,基于JavaScript的身份证号码验证...

    HTML5手机身份证上传表单提交代码.zip

    5. **JS特效-表单按钮**:标签中提到的"JS特效-表单按钮",可能指的是在提交表单时,通过JavaScript实现的一些交互效果,如按钮禁用防止重复提交、加载动画展示上传进度等。这些特效可以提升用户体验,使上传过程...

    js判断输入是否中文,数字,身份证等等js函数集合第1/3页

    ### JavaScript实用函数集合:中文、数字、身份证等输入验证 #### 概述 在Web开发过程中,表单数据的有效性和准确性对于用户体验至关重要。JavaScript作为前端脚本语言,提供了丰富的工具来帮助开发者进行输入验证...

    javascript实现验证身份证号的有效性并提示

    知识点概述: 本文详细介绍了如何使用JavaScript编写脚本...以上就是使用JavaScript实现身份证号码验证的有效性检测所需掌握的知识点。通过这些函数的组合使用,可以有效地判断一个身份证号码是否是真实且有效的号码。

    华视CVR-100U身份证阅读器C#读取demo

    为了确保程序的稳定性和兼容性,开发时需要考虑多方面的因素,例如设备连接状态的检测、错误处理机制、线程安全等。此外,由于涉及到个人隐私,开发者还应遵循相关的法律法规,确保数据的安全使用。 总的来说,华视...

    JS实现的表单验证和强大的身份证

    这个函数用于检测用户输入中是否包含了不允许出现的特殊字符(如斜杠、尖括号等)。如果存在这些字符,则返回`false`表示输入不合法。 ### 4. 表单验证流程 (CheckForm) 此函数负责遍历整个表单的所有元素,并对每...

    JS编写函数实现对身份证号码最后一位的验证功能

    下面,我们将详细探讨如何使用JavaScript编写函数来实现对身份证号码最后一位的验证。 首先,需要了解身份证号码的构成: 1. 前6位是地区代码,代表了持证人户籍所在地。 2. 接下来的8位是出生日期码,按“YYYYMMDD...

    功能很强大的个人身份证有效性验证程序

    很牛X的身份证编号数有效性检测,普通正则表达式只能验证身份证的位数及格式是否正确,不能验证是否是真实有效的身份证号码。这个JS程序可以验证输入的身份证号码是否是合法注册的,很好很强大啊!甚至可以验证出...

    sfz检测网站源码.zip

    在sfz检测网站源码中,JavaScript文件(如`script.js`)将处理用户输入的身份证信息,进行验证和检测。这可能涉及到正则表达式用于格式验证,以及可能的身份证号码算法校验。此外,JavaScript还可以用来实现无刷新的...

    NTESOcrSDK:身份证检测 SDK

    OCR技术通过先进的图像处理和机器学习算法,可以自动检测身份证的位置,对身份证上的文字进行识别,并将结果以结构化的数据形式返回。 在JavaScript环境下使用NTESOcrSDK,开发者需要首先通过npm或yarn等包管理工具...

    验证身份证.pdf

    校验码是根据前17位数字按照特定算法计算得出的,用于检测整个身份证号码的一致性。这个算法包括加权求和和模11运算,但这段代码并未包含这部分验证。 因此,要实现完整的身份证验证,我们需要额外的代码来检查地区...

    基于OpenCV+tesseract-ocr实现身份证识别.zip

    多语言支持:尽管OpenCV主要使用C++编写,但它提供了丰富的API绑定,支持包括C、Python、Java、MATLAB、JavaScript等多种编程语言,方便不同领域的开发者使用。 开源与免费:OpenCV遵循BSD开源许可证发布,用户...

    js常用工具函数-通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型、数组随机洗牌算法、检测密码强度等等

    JS常用工具函数(压缩包中含有MD文件可自行查看)--包含:通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型-是否是字符串、数字、Boolean、函数、对象、数组...

    比较全的js验证,包括(身份证,手机,固话,身份证号与性别、出生日期验证等等)

    自己写的比较全js验证,供大家参考 //身份证验证 function checkIdcard(idcard1,showMsg){ var idcard=this.trim(idcard1);// 对身份证号码做处理。去除头尾空格。 var Errors=new Array( "验证通过!", ...

    神思二代证读卡控件V3.0.0.2.rar

    这是一个示例网页,它演示了如何在Web环境中集成神思二代证读卡控件,展示如何通过JavaScript或服务器端脚本调用控件,读取身份证信息,并在网页上显示。 在实际应用中,开发者可以将神思二代证读卡控件集成到各种...

    Python基于Frida的Android App隐私合规检测辅助工具源码.zip

    隐私合规检测的目标是确保App不会非法收集、传输或存储用户敏感数据,如身份证号、电话号码、位置信息等。通过Frida,我们可以: 1. 监听和记录特定API调用:在App运行时,检测可能涉及隐私数据的系统调用或第三方...

Global site tag (gtag.js) - Google Analytics