中国身份证号码验证,支持15,18位,可验证成功90%的身份证号
using System;/// <summary>
/// Summary description for IDCardValid
/// </summary>
public class IDCardValid
{public IDCardValid(){//
// TODO: Add constructor logic here
//
}/// <summary>
/// 验证身份证号码
/// </summary>
/// <param name="Id">身份证号码</param>
/// <returns>验证成功为True,否则为False</returns>
public static bool CheckIDCard(string Id){if (Id.Length == 18){bool check = CheckIDCard18(Id);return check;}else if (Id.Length == 15){bool check = CheckIDCard15(Id);return check;}else{return false;}}
#region 身份证号码验证
/// <summary>
/// 验证15位身份证号
/// </summary>
/// <param name="Id">身份证号</param>
/// <returns>验证成功为True,否则为False</returns>
private static bool CheckIDCard18(string Id){long n = 0;if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false){return false;//数字验证
}string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证
}string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证
}string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');char[] Ai = Id.Remove(17).ToCharArray();int sum = 0;for (int i = 0; i < 17; i++){sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());}int y = -1;Math.DivRem(sum, 11, out y);if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()){return false;//校验码验证
}return true;//符合GB11643-1999标准
}/// <summary>
/// 验证18位身份证号
/// </summary>
/// <param name="Id">身份证号</param>
/// <returns>验证成功为True,否则为False</returns>
private static bool CheckIDCard15(string Id){long n = 0;if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14)){return false;//数字验证
}string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证
}string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证
}return true;//符合15位身份证标准
}
#endregion
}
转载于:https://www.cnblogs.com/leonardleonard/archive/2008/07/03/1927889.html
中国身份证号码验证,支持15,18位,可验证成功90%的身份证号相关推荐
- Jquery 对 身份证号码的验证 (15/18位)
//欢迎验证.给予指正错误,从好多地方查来的资料修改的...已用本人身份证验证... 由于以前修改的问题无法验证带 X 的身份证号码,已修复!//为值添加0function Append_zore(t ...
- 简单的关于身份证(15位或者18位)合法性验证
简单的关于身份证(15位或者18位)合法性验证 package com.clark.test.idcard;/*** 测试校验身份证合法性的小程序* <p>我们常用的身份证号码为18位或者 ...
- 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)
window.checkIdNumber=(function () {var vcity = {11: "北京", 12: "天津", 13: "河北 ...
- 15/18位身份证号码验证的正则表达式总结(详细版)
前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...
- 15/18位身份证号码验证
15/18位身份证号码验证 在做身份证验证之前你得明确身份证号的组成. 首先我告诉你,18位身份证号码后面的字母只有"X"这一个.(X是罗马数字的10,用X来代替10,可以保证您的 ...
- 使用Java编写Hive的UDF实现身份证号码校验及15位升级18位
使用Java编写Hive的UDF实现身份证号码校验及15位升级18位 背景 在数仓项目中,有时候会根据身份证信息做一些取数filter或者条件判断的相关运算进而获取到所需的信息.古人是用Oracle做 ...
- 身份证号码含义及最后一位校验算法(ISO 7064:1983.MOD 11-2)
身份证的各位数字代表的含义 ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-第18位) 校验码计算(Python 代码) 身份证的各位数字代表的含义 1.前1.2位数字表示 ...
- 身份证号码工具类(15位,18位,10位)
解析身份证信息的工具类,包括获得身份证的出生日期,性别,身份证省份,留作自用 import java.text.ParseException; import java.text.SimpleDateF ...
- Java身份证号码严格验证(第18位校验码算法实现)
/*** 身份证号码的格式:610821-20061222-612-X 由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,* 第18位为校验码.检验码分别是0-10共 ...
最新文章
- 《架构漫谈》读书笔记五
- 获取内容第一张图片地址的函数
- 开源作品ThinkJDBC—一行代码搞定数据库操作
- shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧
- Wasserstein GAN最新进展:从weight clipping到gradient penalty,更加先进的Lipschitz限制手法
- (视频+图文)机器学习入门系列-第1章 引言
- LeetCode 437. Path Sum III (STL map前缀和)
- [恢]hdu 2012
- Android自定义view之ViewPager指示器——2
- 华为库存至少够缓冲一年;张朝阳质疑 5G 微波危害;苹果iOS 13不受支持机型曝光 | 极客头条...
- 屏幕方向调节---LANDSCAPE与PORTRAIT
- chpater 2 : InnoDB存储引擎
- php,javascript获取传递各参数的用法
- 在GlassFish中应用Hibernate
- 多线程之线程池Executor应用
- 据当前时间获取本学期周次
- 【传感器大赏】压电薄膜震动传感器
- COleDateTime SYSTEMTIME CTime
- JavaScript-WebAPIs学习记录
- 烽火狼烟丨Fastjson反序列化漏洞风险提示
热门文章
- python3 案例分享-seaborn demo
- java 8进制串转中文_老杜带你学Java【第六课】
- 教你不编程快速解析 JSON 数据
- DenyHosts阻止SSH暴力攻击
- 巧用Windows Media Player翻录功能,把光盘上cd曲目复制到电脑。
- 堪比法拉利!欧洲四向车搬运行李实录
- cosmic_python
- 西安交大城市学院计算机怎么,西安交大城市学院计算机系在“量子计算机”教研领域获得显著进展...
- 房产科把用户申请表输入计算机后,系统首先检查申请表的合法性,房产管理系统.doc...
- 中国石油大学(北京)《软件工程》网考题