身份证有分15位,和18位两种。
下面先实现15位身份证的子类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
/// <summary> /// 中国大陆身份证判断。用于15位判断 /// /// <see cref="!:https://blog.csdn.net/s1102379635/article/details/7967179"/> /// <see cref="!:https://blog.csdn.net/qq_26545305/article/details/75042982"/> /// /// 前1、2位数字表示:所在省(直辖市、自治区)的代码; /// 第3、4位数字表示:所在地级市(自治州)的代码; /// 第5、6位数字表示:所在区(县、自治县、县级市)的代码; /// 第7—14位数字表示:出生年、月、日; /// 第15、16位数字表示:所在地的派出所的代码(身份证背面的签发机关); /// 第17位数字表示性别:奇数表示男性,偶数表示女性; /// 第18位数字是校检码(个人信息码)(有的人是可能是x,这代表的是10罗马数字); /// </summary> public class ChineseId15Bit : ChineseIdBase { /// <summary> /// 验证15位身份证号 /// </summary> /// <param name="id">身份证号</param> /// <returns>验证成功为True,否则为False</returns> public override bool IsGrant( string id) { if ( string .IsNullOrWhiteSpace(id)) { return false ; } if (id.Length != 15) { return false ; } //数字校验 if (! this .CheckNumber(id)) { return false ; } //省市区区域校验,身份前2位拿来判断 if (! this .CheckAddress(id)) { return false ; } //针对15位身份证校验生日。取身份证上的第7-14位字符来判断 if (! this .CheckBirth(id)) { return false ; } return true ; //符合15位身份证标准 } /// <summary> /// 数字验证 /// </summary> /// <param name="id"></param> /// <returns></returns> protected override bool CheckNumber( string id) { if ( long .TryParse(id, out long n) == false || n < Math.Pow(10, 14)) { return false ; //数字验证 } return true ; } /// <summary> /// 针对15位身份证校验生日。取身份证上的第7-14位字符来判断 /// </summary> /// <param name="code"></param> /// <returns></returns> protected override bool CheckBirth( string id) { 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 ; } } |
最新更新
C#教程之【朝花夕拾】设计模式之单例模
C#教程之提供一个中国身份证号码判断的
C#教程之高压电工-复审
C#教程之微信小程序代办清单任务之语言
C#教程之C#默认参数原理探究
C#教程之持续集成之 Nuget 进阶
C#教程之C#中USB转串口的拔插捕获
C#教程之C# 创建含多层分类标签的Excel图表
C#教程之C# 虚拟串口通信
C#教程之C# 虚拟串口通信
asp.net教程之纯ASP上传图像文件到数据库实
asp.net教程之ASP错误处理
asp.net教程之ASP网站防范黑客技巧
asp.net教程之用ASP取出HTML里面的图片地址
asp.net教程之ASP实现网页打开任何类型文件
asp.net教程之ASP木马Webshell安全解决办案
asp.net教程之几招让你的网站免受采集之苦
asp.net教程之ASP使用MYSQL数据库全攻略
asp.net教程之Ad Rotator 组件参考
asp.net教程之在Asp中使用存储过程数值类型
MySQL教程之[MySQL] mysql int后面的数字与前导
MySQL教程之[MySQL] 联合索引与using index co
mysql 多主
MySQL教程之常用SQL语句
MySQL教程之MySQL 笔记整理(13) --为什么数
DCL
MySQL教程之mysql(三)
MySQL教程之mysql(五)
MySQL教程之MySQL中SELECT语句简单使用
MySQL教程之MySQL中SELECT语句简单使用