C# 验证/升位公民身份号码/身份证号码 最简单的 本人原创使用请缴纳版权费用!
2010-02-01 22:09
656 查看
谁还有更简单的请留言!部分代码方便调试,未精简。
VerifyIdCard.cs
VerifyIdCard.cs
using System; using System.Text.RegularExpressions; namespace Hongcing { /// <summary> /// 验证公民身份号码/身份证号码升位 /// </summary> public static class VerifyIdCard { static readonly int[] iW = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; //static readonly char[] szVerCode ={ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; static readonly string szVerCode = "10X98765432"; /// <summary> /// 获取校验码 /// </summary> /// <param name="id">17位字符串</param> /// <returns>返回的校验码</returns> private static char GetVerifyCode(string id) { if (!Regex.IsMatch(id, @"^\d{17}$")) throw new ArgumentException("必须是17位数字", "id"); int iS = 0; for (int i = 0, j = 0; i < id.Length && j < iW.Length; i++, j++) { int iA = id[i] - '0'; iS += iA * iW[j]; } int iY = iS % 11; return szVerCode[iY]; } /// <summary> /// 公民身份号码 15 位升级为 18 位 /// </summary> /// <param name="id">15 位公民身份号码</param> /// <returns>18 位公民身份号码</returns> public static string Upgrade(string id) { if (!Regex.IsMatch(id, @"^\d{15}$")) throw new ArgumentException("必须是15位数字", "id"); string tempId = id.Insert(6, "19"); string newId = tempId + GetVerifyCode(tempId); return newId; } /// <summary> /// 验证 18 位公民身份号码是否有效 /// </summary> /// <param name="id">18 位公民身份号码</param> /// <returns>有效为 true,无效为 false</returns> public static bool Verify(string id) { if (!Regex.IsMatch(id, @"^\d{17}[0-9X]$")) throw new ArgumentException("必须是18位数字或者前17位为数字最后一位为大写字母 X", "id"); string tempId = id.Substring(0, 17); char oldVerifyCode = id[17]; char newVerifyCode = GetVerifyCode(tempId); return oldVerifyCode == newVerifyCode; } } }
相关文章推荐
- C#后台验证身份证号码的一个方法
- C#身份证号码验证是否正确
- 如何通过使用窗体身份验证和 Visual C#.NET 对 Active Directory 验证身份
- js验证只能为数字 和 简单的身份证号码验证。。
- JS使用正则表达式验证身份证号码
- 使用 C# .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
- 如何验证 Active Directory 使用表单身份验证和 Visual C#.NET
- C#使用正则表达式验证电话号码、手机号、身份证号代码
- 身份证号码验证 C#
- C#验证身份证号码
- C#中使用正则表达式验证电话号码、手机号、身份证号
- JS实现中国公民身份证号码有效性验证
- C# 正则表达式验证代码(字母、数字、Email、网址、电话号码、汉字、身份证号码)
- 原创C#中国身份证验证(包括省份验证和校验码验证,符合GB11643-1999标准)
- C#实现的18位身份证号码最新算法[验证部分]
- c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?
- 【C#】使用Windows身份验证连接Sql Server,ListView随窗体大小的变化而调节列宽
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- C#中使用正则表达式验证电话号码、手机号、身份证号、数字和邮编
- 身份证号码的升位和验证