身份证号码验证

//说明:验证身份证的有效性

//参数: 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?"男":"女"));

  
   }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值