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位身份证标准
}
以上所述就是本文的全部内容了,希望大家能够喜欢。