C#验证身份证的函数
这段C#代码主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证
///<summary> ///验证身份证是否合法 ///</summary> ///<paramname="idCard">要验证的身份证</param> publicstaticboolIsIdCard(stringidCard) { //如果为空,认为验证合格 if(IsNullOrEmpty(idCard)) { returntrue; } //清除要验证字符串中的空格 idCard=idCard.Trim(); //模式字符串 StringBuilderpattern=newStringBuilder(); pattern.Append(@"^(11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|"); pattern.Append(@"50|51|52|53|54|61|62|63|64|65|71|81|82|91)"); pattern.Append(@"(\d{13}|\d{15}[\dx])$"); //验证 returnRegexHelper.IsMatch(idCard,pattern.ToString()); }
更为复杂些的验证方法:
privatestringCheckCidInfo(stringcid) { string[]aCity=newstring[]{null,null,null,null,null,null,null,null,null,null,null,"北京","天津","河北","山西","内蒙古",null,null,null,null,null,"辽宁","吉林","黑龙江",null,null,null,null,null,null,null,"上海","江苏","浙江","安微","福建","江西","山东",null,null,null,"河南","湖北","湖南","广东","广西","海南",null,null,null,"重庆","四川","贵州","云南","西藏",null,null,null,null,null,null,"陕西","甘肃","青海","宁夏","新疆",null,null,null,null,null,"台湾",null,null,null,null,null,null,null,null,null,"香港","澳门",null,null,null,null,null,null,null,null,"国外"}; doubleiSum=0; stringinfo=""; System.Text.RegularExpressions.Regexrg=newSystem.Text.RegularExpressions.Regex(@"^\d{17}(\d|x)$"); System.Text.RegularExpressions.Matchmc=rg.Match(cid); if(!mc.Success) { return""; } cid=cid.ToLower(); cid=cid.Replace("x","a"); if(aCity[int.Parse(cid.Substring(0,2))]==null) { return"非法地区"; } try { DateTime.Parse(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2)); } catch { return"非法生日"; } for(inti=17;i>=0;i--) { iSum+=(System.Math.Pow(2,i)%11)*int.Parse(cid[17-i].ToString(),System.Globalization.NumberStyles.HexNumber); } if(iSum%11!=1) return("非法证号"); return(aCity[int.Parse(cid.Substring(0,2))]+","+cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2)+","+(int.Parse(cid.Substring(16,1))%2==1¡"男":"女")); } 调用测试: Response.Write(CheckCidInfo("340524198002300019")); Response.Write(CheckCidInfo("34052419800101001x"));
方法三:
///<summary> ///身份证验证 ///</summary> ///<paramname="Id">身份证号</param> ///<returns></returns> publicboolCheckIDCard(stringId) { if(Id.Length==18) { boolcheck=CheckIDCard18(Id); returncheck; } elseif(Id.Length==15) { boolcheck=CheckIDCard15(Id); returncheck; } else { returnfalse; } } ///<summary> ///18位身份证验证 ///</summary> ///<paramname="Id">身份证号</param> ///<returns></returns> PRivateboolCheckIDCard18(stringId) { longn=0; if(long.TryParse(Id.Remove(17),outn)==false||n<Math.Pow(10,16)||long.TryParse(Id.Replace('x','0').Replace('X','0'),outn)==false) { returnfalse;//数字验证 } stringaddress="11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if(address.IndexOf(Id.Remove(2))==-1) { returnfalse;//省份验证 } stringbirth=Id.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=Id.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]!=Id.Substring(17,1).ToLower()) { returnfalse;//校验码验证 } returntrue;//符合GB11643-1999标准 } ///<summary> ///15位身份证验证 ///</summary> ///<paramname="Id">身份证号</param> ///<returns></returns> privateboolCheckIDCard15(stringId) { longn=0; if(long.TryParse(Id,outn)==false||n<Math.Pow(10,14)) { returnfalse;//数字验证 } stringaddress="11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if(address.IndexOf(Id.Remove(2))==-1) { returnfalse;//省份验证 } stringbirth=Id.Substring(6,6).Insert(4,"-").Insert(2,"-"); DateTimetime=newDateTime(); if(DateTime.TryParse(birth,outtime)==false) { returnfalse;//生日验证 } returntrue;//符合15位身份证标准 }
以上所述就是本文的全部内容了,希望大家能够喜欢。