1         #region 检测是否是正确的身份证
  2         /// <summary>
  3         /// 身份证验证
  4         /// </summary>
  5         /// <param name="num"></param>
  6         /// <returns></returns>
  7         public static bool isIdCardNo(string cardid)
  8         {
  9             string num = cardid.ToUpper();
 10             int[] factorArr = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
 11             char[] parityBit = new char[] { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
 12             char[] varArray = new char[18];
 13             var lngProduct = 0;
 14             int intCheckDigit = 0;
 15             var intStrLen = num.Length;
 16             var idNumber = num;
 17             // initialize
 18             if ((intStrLen != 15) && (intStrLen != 18))
 19             {
 20                 return false;
 21             }
 22             // check and set value
 23
 24             for (int i = 0; i < intStrLen; i++)
 25             {
 26                 varArray[i] = (char)Convert.ToInt32(idNumber[i]);
 27                 if (((varArray[i] - 48) < 0 || (varArray[i] - 48) > 9) && (i != 17))
 28                 {
 29                     return false;
 30                 }
 31                 else if (i < 17)
 32                 {
 33                     varArray[i] = (char)((varArray[i] - 48) * factorArr[i]);
 34                 }
 35             }
 36             if (intStrLen == 18)
 37             {
 38                 //check date
 39                 var date8 = idNumber.Substring(6, 8);
 40                 if (isDate8(date8) == false)
 41                 {
 42                     return false;
 43                 }
 44                 // calculate the sum of the products
 45                 for (int i = 0; i < 17; i++)
 46                 {
 47                     lngProduct = lngProduct + varArray[i];
 48                 }
 49                 // calculate the check digit
 50                 intCheckDigit = parityBit[lngProduct % 11];
 51                 // check last digit
 52                 if (varArray[17] != intCheckDigit)
 53                 {
 54                     return false;
 55                 }
 56             }
 57             else
 58             {        //length is 15
 59                 //check date
 60                 var date6 = idNumber.Substring(6, 6);
 61                 if (isDate6(date6) == false)
 62                 {
 63                     return false;
 64                 }
 65             }
 66             return true;
 67         }
 68
 69         /// <summary>
 70         /// 15位身份证日期检测--年/月--6位
 71         /// </summary>
 72         /// <param name="sDate"></param>
 73         /// <returns></returns>
 74         static bool isDate6(string sDate)
 75         {
 76             if (!Regex.IsMatch(sDate, "^[0-9]{6}$"))
 77             {
 78                 return false;
 79             }
 80             int year, month;
 81             year = Convert.ToInt32(sDate.Substring(0, 4));
 82             month = Convert.ToInt32(sDate.Substring(4, 2));
 83             if (year < 1700 || year > 2500) return false;
 84             if (month < 1 || month > 12) return false;
 85             return true;
 86         }
 87
 88         /// <summary>
 89         /// 18位身份证日期检测--年/月/日--8位
 90         /// </summary>
 91         /// <param name="sDate"></param>
 92         /// <returns></returns>
 93         static bool isDate8(string sDate)
 94         {
 95             if (!Regex.IsMatch(sDate, "^[0-9]{8}$"))
 96             {
 97                 return false;
 98             }
 99             int year, month, day;
100             year = Convert.ToInt32(sDate.Substring(0, 4));
101             month = Convert.ToInt32(sDate.Substring(4, 2));
102             day = Convert.ToInt32(sDate.Substring(6, 2));
103             int[] iaMonthDays = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
104             if (year < 1700 || year > 2500) return false;
105             if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1] = 29;
106             if (month < 1 || month > 12) return false;
107             if (day < 1 || day > iaMonthDays[month - 1]) return false;
108             return true;
109         }
110         #endregion

javascript版

function isIdCardNo(num) {var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);var parityBit = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");var varArray = new Array();var intValue;var lngProduct = 0;var intCheckDigit;var intStrLen = num.length;var idNumber = num;// initializeif ((intStrLen != 15) && (intStrLen != 18)) {return false;}// check and set valuefor (i = 0; i < intStrLen; i++) {varArray[i] = idNumber.charAt(i);if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {return false;} else if (i < 17) {varArray[i] = varArray[i] * factorArr[i];}}if (intStrLen == 18) {//check datevar date8 = idNumber.substring(6, 14);if (isDate8(date8) == false) {return false;}// calculate the sum of the productsfor (i = 0; i < 17; i++) {lngProduct = lngProduct + varArray[i];}// calculate the check digitintCheckDigit = parityBit[lngProduct % 11];// check last digitif (varArray[17] != intCheckDigit) {return false;}}else {        //length is 15//check datevar date6 = idNumber.substring(6, 12);if (isDate6(date6) == false) {return false;}}return true;
}
function isDate6(sDate) {if (!/^[0-9]{6}$/.test(sDate)) {return false;}var year, month, day;year = sDate.substring(0, 4);month = sDate.substring(4, 6);if (year < 1700 || year > 2500) return falseif (month < 1 || month > 12) return falsereturn true
}
/**
* 判断是否为“YYYYMMDD”式的时期
*
*/
function isDate8(sDate) {if (!/^[0-9]{8}$/.test(sDate)) {return false;}var year, month, day;year = sDate.substring(0, 4);month = sDate.substring(4, 6);day = sDate.substring(6, 8);var iaMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]if (year < 1700 || year > 2500) return falseif (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1] = 29;if (month < 1 || month > 12) return falseif (day < 1 || day > iaMonthDays[month - 1]) return falsereturn true
}

转载于:https://www.cnblogs.com/mahatmasmile/archive/2013/02/05/2893034.html

身份证号码有效性检测算法 ( js版 转 .net版 )相关推荐

  1. 身份证号码有效性检测算法 ( js版 转 C#版 )

    C#版 #region 检测是否是正确的身份证 /// <summary> /// 身份证验证 /// </summary> /// <param name=" ...

  2. 身份证号码有效性检测

    身份证号码有效性检测 在开发软件的时候有些注册需要身份证号等信息,并且要求号码的正确性. 简单的身份证号码有效性检测 - (BOOL)verifyIdentityCardNum {NSString * ...

  3. Js实现中国公民身份证号码有效性验证

    2019独角兽企业重金招聘Python工程师标准>>> 参考: Java实现中国公民身份证号码有效性验证 Php实现中国公民身份证号码有效性验证 本文将使用JavaScript实现中 ...

  4. 【python】身份证号码有效性校验

    1. 前言 中华人民共和国国家标准GB 11643-1999<公民身份号码>中规定:公民身份号码是特征组合码,由17位数字本体码和1位校验码组成. 18位数字组合的方式是: 其中,最后一位 ...

  5. 请写代码校验第二代身份证号码有效性。程序接收一个18位的身份证号码和性别,根据以下规则输出号码是有效还是无效。

    请写代码校验第二代身份证号码有效性.程序接收一个18位的身份证号码和性别,根据以下规则输出号码是有效还是无效. 第二代身份证号组成规则: a) 身份证号码(18位)= 地址码(6)+ 出生日期码(8) ...

  6. js实现身份证号码有效性验证

    //Js获取日期.月初时的前天.昨天.今天.明天 function getDay(day) {var today = new Date();var targetday_milliseconds = t ...

  7. python 身份证号码有效性验证

    先声明以下代码不是全部原创,网上找了前辈的一些代码,经过自己的部分加工,有了如下的身份证有效性验证代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*-i ...

  8. 在EXCEL中VBA编程检验身份证号码有效性

    *2022-12-05 改正代码中错别字,规范表述 *2022-11-30 1.增加了过程clearB()用来清除B1:Bx原有的出错说明,在过程examIdentityCard() 开头调用 2.修 ...

  9. Python小白入门- 101 ( 工具篇) Python完成身份证号码校验的算法

    根据国家标准GB 11643-1999<公民身份证号码>的要求: 身份证号码由18位组成,前17位为数字,最后一位是校验码,可能为数字或字母X.其中,前6位是地区代码,接下来8位是出生日期 ...

最新文章

  1. Google148亿元收购Fitbit,抢占苹果、三星可穿戴设备市场地盘
  2. 关于Viual Studio 改变编辑器背景背景及背景图片
  3. SpringBoot学习之@Configuration注解和@Bean注解
  4. ALBERT第一作者亲自讲解:Transformer、BERT、ALBERT、XLNet全面解析
  5. My97DatePicker在asp.net项目中的使用
  6. [css] 遇到overflow: scroll不能平滑滚动怎么解决?
  7. Microsoft Team Foundation Server 2010安装指南
  8. 图像处理:给验证码图片做降噪处理及数据清洗
  9. 用计算机来猜密码,画圈圈也能解锁电脑?我猜你一定不知道!
  10. cesium获取点击内容信息_Cesium获取鼠标点击位置(PickPosition)
  11. 微信扫描二维码后无法打开网页
  12. 100个在线生信小工具
  13. HTML:设置背景颜色和图片
  14. 主成分分析(PCA)及动态主成分分析(Dynamic PCA)模型原理分析
  15. OpenResty代理CNZZ实现内网访问统计
  16. N2N V3 安装配置解决方案
  17. MATLAB画Correlation plots
  18. 磁盘驱动属于计算机的,计算机基本知识(8005)---HDD(硬盘驱动器Hard Disk Drive)
  19. Flask框架的学习——04—(模版继承、静态文件的配置、豆瓣APP界面案例实现)
  20. 企业拼团APP商城开发流程6步曲

热门文章

  1. HttpClient 详解一《C#高级编程(第9版)》
  2. ORACLE 培训 -相克军
  3. JavaScript学习笔记五:变量、作用域和内存问题
  4. Redis事务和watch
  5. ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引
  6. CXF wsdl2java 生成java代码供客户端使用
  7. redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列(续)
  8. 全国计算机等级考试 简称NCRE,长春大学2018年下半年全国计算机等级考试(简称NCRE)招生简章...
  9. java 最少使用(lru)置换算法_「面试」LRU了解么?看看LinkedHashMap如何实现LRU算法...
  10. 信息增益有负值吗_一个自动化设备的信息化改造项目,谈谈自动化工程师转型之路—IT融合OT...