<STRONG class=k>using</STRONG> System;
- <STRONG class=c>/// <summary>
- </STRONG><STRONG class=c>/// Summary description for IDCardValid
- </STRONG><STRONG class=c>/// </summary>
- </STRONG><STRONG class=k>public</STRONG> <STRONG class=k>class</STRONG> IDCardValid
- {
- <STRONG class=k>public</STRONG> IDCardValid()
- {
- <STRONG class=c>//
- </STRONG> <STRONG class=c>// TODO: Add constructor logic here
- </STRONG> <STRONG class=c>//
- </STRONG> }
- <STRONG class=c>/// <summary>
- </STRONG> <STRONG class=c>/// 验证×××号码
- </STRONG> <STRONG class=c>/// </summary>
- </STRONG> <STRONG class=c>/// <param name="Id">×××号码</param>
- </STRONG> <STRONG class=c>/// <returns>验证成功为True,否则为False</returns>
- </STRONG> <STRONG class=k>public</STRONG> <STRONG class=k>static</STRONG> <STRONG class=k>bool</STRONG> CheckIDCard(<STRONG class=k>string</STRONG> Id)
- {
- <STRONG class=k>if</STRONG> (Id.Length == 18)
- {
- <STRONG class=k>bool</STRONG> check = CheckIDCard18(Id);
- <STRONG class=k>return</STRONG> check;
- }
- <STRONG class=k>else</STRONG> <STRONG class=k>if</STRONG> (Id.Length == 15)
- {
- <STRONG class=k>bool</STRONG> check = CheckIDCard15(Id);
- <STRONG class=k>return</STRONG> check;
- }
- <STRONG class=k>else</STRONG>
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;
- }
- }
- <STRONG class=r> #region ×××号码验证
- </STRONG>
- <STRONG class=c>/// <summary>
- </STRONG> <STRONG class=c>/// 验证15位×××号
- </STRONG> <STRONG class=c>/// </summary>
- </STRONG> <STRONG class=c>/// <param name="Id">×××号</param>
- </STRONG> <STRONG class=c>/// <returns>验证成功为True,否则为False</returns>
- </STRONG> <STRONG class=k>private</STRONG> <STRONG class=k>static</STRONG> <STRONG class=k>bool</STRONG> CheckIDCard18(<STRONG class=k>string</STRONG> Id)
- {
- <STRONG class=k>long</STRONG> n = 0;
- <STRONG class=k>if</STRONG> (<STRONG class=k>long</STRONG>.TryParse(Id.Remove(17), <STRONG class=k>out</STRONG> n) == <STRONG class=k>false</STRONG> || n < Math.Pow(10, 16) || <STRONG class=k>long</STRONG>.TryParse(Id.Replace(<STRONG class=s>'x'</STRONG>, <STRONG class=s>'0'</STRONG>).Replace(<STRONG class=s>'X'</STRONG>, <STRONG class=s>'0'</STRONG>), <STRONG class=k>out</STRONG> n) == <STRONG class=k>false</STRONG>)
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//数字验证
- </STRONG> }
- <STRONG class=k>string</STRONG> address = <STRONG class=s>"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"</STRONG>;
- <STRONG class=k>if</STRONG> (address.IndexOf(Id.Remove(2)) == -1)
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//省份验证
- </STRONG> }
- <STRONG class=k>string</STRONG> birth = Id.Substring(6, 8).Insert(6, <STRONG class=s>"-"</STRONG>).Insert(4, <STRONG class=s>"-"</STRONG>);
- DateTime time = <STRONG class=k>new</STRONG> DateTime();
- <STRONG class=k>if</STRONG> (DateTime.TryParse(birth, <STRONG class=k>out</STRONG> time) == <STRONG class=k>false</STRONG>)
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//生日验证
- </STRONG> }
- <STRONG class=k>string</STRONG>[] arrVarifyCode = (<STRONG class=s>"1,0,x,9,8,7,6,5,4,3,2"</STRONG>).Split(<STRONG class=s>','</STRONG>);
- <STRONG class=k>string</STRONG>[] Wi = (<STRONG class=s>"7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2"</STRONG>).Split(<STRONG class=s>','</STRONG>);
- <STRONG class=k>char</STRONG>[] Ai = Id.Remove(17).ToCharArray();
- <STRONG class=k>int</STRONG> sum = 0;
- <STRONG class=k>for</STRONG> (<STRONG class=k>int</STRONG> i = 0; i < 17; i++)
- {
- sum += <STRONG class=k>int</STRONG>.Parse(Wi[i]) * <STRONG class=k>int</STRONG>.Parse(Ai[i].ToString());
- }
- <STRONG class=k>int</STRONG> y = -1;
- Math.DivRem(sum, 11, <STRONG class=k>out</STRONG> y);
- <STRONG class=k>if</STRONG> (arrVarifyCode[y] != Id.Substring(17, 1).ToLower())
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//校验码验证
- </STRONG> }
- <STRONG class=k>return</STRONG> <STRONG class=k>true</STRONG>;<STRONG class=c>//符合GB11643-1999标准
- </STRONG> }
- <STRONG class=c>/// <summary>
- </STRONG> <STRONG class=c>/// 验证18位×××号
- </STRONG> <STRONG class=c>/// </summary>
- </STRONG> <STRONG class=c>/// <param name="Id">×××号</param>
- </STRONG> <STRONG class=c>/// <returns>验证成功为True,否则为False</returns>
- </STRONG> <STRONG class=k>private</STRONG> <STRONG class=k>static</STRONG> <STRONG class=k>bool</STRONG> CheckIDCard15(<STRONG class=k>string</STRONG> Id)
- {
- <STRONG class=k>long</STRONG> n = 0;
- <STRONG class=k>if</STRONG> (<STRONG class=k>long</STRONG>.TryParse(Id, <STRONG class=k>out</STRONG> n) == <STRONG class=k>false</STRONG> || n < Math.Pow(10, 14))
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//数字验证
- </STRONG> }
- <STRONG class=k>string</STRONG> address = <STRONG class=s>"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"</STRONG>;
- <STRONG class=k>if</STRONG> (address.IndexOf(Id.Remove(2)) == -1)
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//省份验证
- </STRONG> }
- <STRONG class=k>string</STRONG> birth = Id.Substring(6, 6).Insert(4, <STRONG class=s>"-"</STRONG>).Insert(2, <STRONG class=s>"-"</STRONG>);
- DateTime time = <STRONG class=k>new</STRONG> DateTime();
- <STRONG class=k>if</STRONG> (DateTime.TryParse(birth, <STRONG class=k>out</STRONG> time) == <STRONG class=k>false</STRONG>)
- {
- <STRONG class=k>return</STRONG> <STRONG class=k>false</STRONG>;<STRONG class=c>//生日验证
- </STRONG> }
- <STRONG class=k>return</STRONG> <STRONG class=k>true</STRONG>;<STRONG class=c>//符合15位×××标准
- </STRONG> }
- <STRONG class=r> #endregion
- </STRONG>}