//说明:验证身份证的有效性
//参数: cid -身份证号码
//返回: 地方-出生时间-性别
private string CheckCidInfo(string cid)
{
//输入限制
if (cid.Length != 18)
{
string warrnig = "";
warrnig = "身份证号码输入长度不正确!";
for (int i = 0; i < cid.Length - 1; i++)
{
if (cid[i]>'9'||cid[i ]<'0')
{
warrnig += "身份证号码中包含非法字符!";
return warrnig;
}
}
}
if (cid.Length == 18)
{
string warrnig = "";
for (int i = 0; i < cid.Length - 1; i++)
{
if (cid[i] > '9' || cid[i] < '0')
{
warrnig = "身份证号码中包含非法字符!";
return warrnig;
}
}
char c = cid [cid.Length -1];
bool last = false;
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
last = true;
}
if (!last)
{
warrnig = "身份证末位号码中包含非法字符!";
last = false;
return warrnig;
}
}
string[] aCity = new string[]{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,"国外"};
double iSum=0;
string info="";
System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^/d{17}(/d|x)$");
System.Text.RegularExpressions.Match mc = 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(int i=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?"男":"女"));
}