1. window.checkIdcard = function (idcard) {
  2. var errors = new Array(
  3. "yes",
  4. "请检查输入的证件号码是否正确", //"身份证号码位数不对!",
  5. "请检查输入的证件号码是否正确", //"身份证号码出生日期超出范围或含有非法字符!",
  6. "请检查输入的证件号码是否正确", //"身份证号码校验错误!",
  7. "请检查输入的证件号码是否正确" //"身份证地区非法!"
  8. );
  9.  
  10. var area = { : "北京", : "天津", : "河北", : "山西", : "内蒙古", : "辽宁", : "吉林", : "黑龙江", : "上海", : "江苏", : "浙江", : "安徽", : "福建", : "江西", : "山东", : "河南", : "湖北", : "湖南", : "广东", : "广西", : "海南", : "重庆", : "四川", : "贵州", : "云南", : "西藏", : "陕西", : "甘肃", : "青海", : "宁夏", : "新疆", : "台湾", : "香港", : "澳门", : "国外" }
  11. var y, jym;
  12. var s, m;
  13. var idcardArray = new Array();
  14. idcard = idcard.replace(/(^\s*)|(\s*$)/g, "");
  15.  
  16. idcardArray = idcard.split("");
  17. //地区检验
  18. if (area[parseInt(idcard.substr(, ))] == null) return errors[];
  19. //身份号码位数及格式检验
  20. var ereg;
  21. switch (idcard.length) {
  22. case :
  23. if ((parseInt(idcard.substr(, )) + ) % == || ((parseInt(idcard.substr(, )) + ) % == && (parseInt(idcard.substr(, )) + ) % == )) {
  24. ereg = /^[-][-]{}[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-][-]))[-]{}$/; //测试出生日期的合法性
  25. } else {
  26. ereg = /^[-][-]{}[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-]|[-]))[-]{}$/; //测试出生日期的合法性
  27. }
  28. if (ereg.test(idcard)) return errors[];
  29. else return errors[];
  30. case :
  31. //18位身份号码检测
  32. //出生日期的合法性检查
  33. //闰年月日:((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]))
  34. //平年月日:((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]))
  35. if (parseInt(idcard.substr(, )) % == || (parseInt(idcard.substr(, )) % == && parseInt(idcard.substr(, )) % == )) {
  36. ereg = /^[-][-]{}(|)[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-][-]))[-]{}[-9Xx]$/; //闰年出生日期的合法性正则表达式
  37. } else {
  38. ereg = /^[-][-]{}(|)[-]{}((||||||)([-]|[-][-]|[-])|(|||)([-]|[-][-]|)|([-]|[-]|[-]))[-]{}[-9Xx]$/; //平年出生日期的合法性正则表达式
  39. }
  40. if (ereg.test(idcard)) {//测试出生日期的合法性
  41. //计算校验位
  42. s = (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  43. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  44. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  45. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  46. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  47. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  48. + (parseInt(idcardArray[]) + parseInt(idcardArray[])) *
  49. + parseInt(idcardArray[]) *
  50. + parseInt(idcardArray[]) *
  51. + parseInt(idcardArray[]) * ;
  52. y = s % ;
  53. m = "F";
  54. jym = "10X98765432";
  55. m = jym.substr(y, ); //判断校验位
  56. if (m == idcardArray[]) return errors[]; //检测ID的校验位
  57. else return errors[];
  58. }
  59. else return errors[];
  60. default:
  61. return errors[];
  62. }
  63. }

.NET后台验证点这里

JS身份证验证的更多相关文章

  1. 【原创】贡献一个项目中用到的js身份证验证-超级准!!!

    前言 百度百科解释:身份证号码 首先贡献一个大神的链接:js验证身份证超准 代码 function checkIdcard(idcard) { var Errors = new Array( &quo ...

  2. js身份证验证类

    var IDCard = function () { //---------------------------------------------------------- // 功能:根据身份证号 ...

  3. js身份证验证-超级准!!!

    function checkIdcard(idcard) { var Errors = new Array( "验证通过!", "身份证号码位数不对!", &q ...

  4. js身份证验证代码

    var idCardNoUtil = { provinceAndCitys: {11:"北京",12:"天津",13:"河北",14:&qu ...

  5. 身份证验证JS代码

    身份证验证JS程序function checkidcardfun(code) { var city = {11: "北京", 12: "天津", 13: &qu ...

  6. Js完美验证15/18身份证,Js验证身份证,支持15/18位

    Js完美验证15/18身份证,Js验证身份证,支持15/18位 >>>>>>>>>>>>>>>>> ...

  7. js邮箱验证,身份证验证,正则表达式

    邮箱验证: html部分: 邮箱验证:<input type="text" id="mail" value="" / onkeyup= ...

  8. 基于JS的身份证验证(完整版)

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

  9. JS脚本验证大全

    /** * 2009-10-01 * 贺  臣 * 情  缘 * js各种表单数据验证 *//***************************************************** ...

随机推荐

  1. Genymotion虚拟镜像下载慢或者失败的解决办法

    Genymotion虚拟镜像下载慢或者失败的解决办法 http://files2.genymotion.com/dists/8.0.0/ova/genymotion_vbox86p_8.0_18061 ...

  2. 软件包管理:rpm命令管理-校验和文件提取

    校验主要用于判断文件是否做了更改 修改标志: 会用-V,会看输出结果即可. 当有误操作,比如删了某一个文件,只需知道他属于哪一个rpm包,可用提取找回覆盖就行.并不把整个rpm包安装,而是提取其中的某 ...

  3. Apache+php+mysql环境配置

    Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由 ...

  4. PKU2418_树种统计(map应用||Trie树)

    Description Hardwoods are the botanical group of trees that have broad leaves, produce a fruit or nu ...

  5. Java设计模式应用——组合模式

    组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...

  6. 让360双核浏览器默认极速模式,避免采用IE模式无法正常访问html5网页的解决办法

    让360双核浏览器默认极速模式,避免采用IE模式无法正常访问html5网页的解决办法 用Meta标签代码让360双核浏览器默认极速模式不是兼容模式<meta name="rendere ...

  7. java多线程----拒绝策略

    本章介绍线程池的拒绝策略.内容包括:拒绝策略介绍拒绝策略对比和示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.html 拒绝策略介绍 ...

  8. web前端----JavaScript的DOM(三)

    一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如    for(var i = 0;i<ele.length;i++){} 第二种:for (var i in l ...

  9. C++设计模式 之 “接口隔离” 模式:Facade、Proxy、Mediator、Adapter

    “接口隔离”模式 在组建构建过程中,某些接口之间之间的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来相互紧密关联的接口是一种常见的解决方案. 典型模式 #Facad ...

  10. Rubin-Miller与Pollard Rho

    两个没什么卵用的算法. 只放一下模板: BZOJ3667 //BZOJ 3667 //by Cydiater //2017.2.20 #include <iostream> #includ ...