COMPUTER_LZY

要输就输给追求,要嫁就嫁给幸福

导航

身份证号码的验证

public static string Check18IDCard(string cid)
{
    string[] CS$0$0001 = new string[0x5c];
    CS$0$0001[11] = "北京";
    CS$0$0001[12] = "天津";
    CS$0$0001[13] = "河北";
    CS$0$0001[14] = "山西";
    CS$0$0001[15] = "内蒙古";
    CS$0$0001[0x15] = "辽宁";
    CS$0$0001[0x16] = "吉林";
    CS$0$0001[0x17] = "黑龙江";
    CS$0$0001[0x1f] = "上海";
    CS$0$0001[0x20] = "江苏";
    CS$0$0001[0x21] = "浙江";
    CS$0$0001[0x22] = "安微";
    CS$0$0001[0x23] = "福建";
    CS$0$0001[0x24] = "江西";
    CS$0$0001[0x25] = "山东";
    CS$0$0001[0x29] = "河南";
    CS$0$0001[0x2a] = "湖北";
    CS$0$0001[0x2b] = "湖南";
    CS$0$0001[0x2c] = "广东";
    CS$0$0001[0x2d] = "广西";
    CS$0$0001[0x2e] = "海南";
    CS$0$0001[50] = "重庆";
    CS$0$0001[0x33] = "四川";
    CS$0$0001[0x34] = "贵州";
    CS$0$0001[0x35] = "云南";
    CS$0$0001[0x36] = "西藏";
    CS$0$0001[0x3d] = "陕西";
    CS$0$0001[0x3e] = "甘肃";
    CS$0$0001[0x3f] = "青海";
    CS$0$0001[0x40] = "宁夏";
    CS$0$0001[0x41] = "新疆";
    CS$0$0001[0x47] = "台湾";
    CS$0$0001[0x51] = "香港";
    CS$0$0001[0x52] = "澳门";
    CS$0$0001[0x5b] = "国外";
    string[] aCity = CS$0$0001;
    double iSum = 0.0;
    Match mc = new Regex(@"^\d{17}(\d|X|x)$").Match(cid);
    string errormsg = "";
    if (!mc.Success)
    {
        return (errormsg + "18位身份证号格式不正确!");
    }
    cid = cid.ToLower();
    cid = cid.Replace("x""a");
    if ((int.Parse(cid.Substring(02)) > 0x5c) || (aCity[int.Parse(cid.Substring(02))] == null))
    {
        return (errormsg + "身份证行政编码有错!");
    }
    try
    {
        DateTime.Parse(cid.Substring(64) + "-" + cid.Substring(102) + "-" + cid.Substring(122));
    }
    catch
    {
        return (errormsg + "身份证出生日期错误!");
    }
    for (int i = 0x11; i >= 0; i--)
    {
        try
        {
            char CS$0$0003 = cid[0x11 - i];
            iSum += (Math.Pow(2.0, (double) i) % 11.0) * int.Parse(CS$0$0003.ToString(), NumberStyles.HexNumber);
        }
        catch
        {
            return (errormsg + "身份证校验码错误!");
        }
    }
    if ((iSum % 11.0) != 1.0)
    {
        return (errormsg + "身份证校验码错误!");
    }
    return errormsg;
}

posted on 2011-10-14 10:22  CANYOUNG  阅读(493)  评论(0编辑  收藏  举报