C#实现身份证号码验证的方法
本文实例讲述了C#实现身份证号码验证的方法。分享给大家供大家参考。具体实现方法如下:
随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很简单。
主要注意的是,目前的身份证分为16和18位,然后分别验证校验位,省份,生日即可。
主要类如下:
///<summary> ///验证身份证号码类 ///</summary> publicclassIDCardValidation { ///<summary> ///验证身份证合理性 ///</summary> ///<paramname="Id"></param> ///<returns></returns> publicboolCheckIDCard(stringidNumber) { if(idNumber.Length==18) { boolcheck=CheckIDCard18(idNumber); returncheck; } elseif(idNumber.Length==15) { boolcheck=CheckIDCard15(idNumber); returncheck; } else { returnfalse; } } ///<summary> ///18位身份证号码验证 ///</summary> privateboolCheckIDCard18(stringidNumber) { longn=0; if(long.TryParse(idNumber.Remove(17),outn)==false ||n<Math.Pow(10,16)||long.TryParse(idNumber.Replace('x','0').Replace('X','0'),outn)==false) { returnfalse;//数字验证 } stringaddress="11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if(address.IndexOf(idNumber.Remove(2))==-1) { returnfalse;//省份验证 } stringbirth=idNumber.Substring(6,8).Insert(6,"-").Insert(4,"-"); DateTimetime=newDateTime(); if(DateTime.TryParse(birth,outtime)==false) { returnfalse;//生日验证 } 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=idNumber.Remove(17).ToCharArray(); intsum=0; for(inti=0;i<17;i++) { sum+=int.Parse(Wi[i])*int.Parse(Ai[i].ToString()); } inty=-1; Math.DivRem(sum,11,outy); if(arrVarifyCode[y]!=idNumber.Substring(17,1).ToLower()) { returnfalse;//校验码验证 } returntrue;//符合GB11643-1999标准 } ///<summary> ///16位身份证号码验证 ///</summary> privateboolCheckIDCard15(stringidNumber) { longn=0; if(long.TryParse(idNumber,outn)==false||n<Math.Pow(10,14)) { returnfalse;//数字验证 } stringaddress="11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if(address.IndexOf(idNumber.Remove(2))==-1) { returnfalse;//省份验证 } stringbirth=idNumber.Substring(6,6).Insert(4,"-").Insert(2,"-"); DateTimetime=newDateTime(); if(DateTime.TryParse(birth,outtime)==false) { returnfalse;//生日验证 } returntrue; } }
测试调用:
IDCardValidationcard=newIDCardValidation();
//从网上身份证大全找来的,验证结果为true boolresult=card.CheckIDCard("522324197508045617");
Console.WriteLine(result.ToString()); //随便编的,验证结果为false result=card.CheckIDCard("612427199901281214");
Console.WriteLine(result.ToString());
Console.ReadLine();