身份证验证有朋友做过吗 能不能贴个能实现的源码给我!

解决方案 »

  1.   

    /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/正则
      

  2.   

    private string GetCard(string cid)
            {
                if (cid.Length == 15)
                {
                    cid = per15To18(cid);
                }
                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 "格式不正确!"; 
                    return ""; 
                } 
                cid = cid.ToLower(); 
                cid = cid.Replace("x","a"); 
                if(aCity[int.Parse(cid.Substring(0,2))]==null) 
                { 
                    //return "非法地区"; 
                    return ""; 
                } 
                try 
                { 
                     DateTime.Parse(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2)); 
                } 
                catch 
                { 
                     //return "非法生日"; 
                     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("");            return(cid.Substring(6,4)+"-"+cid.Substring(10,2)+"-"+cid.Substring(12,2));        }private string per15To18(string perIDSrc)
            {
                int iS = 0;            //加权因子常数 
                int[] iW = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
                //校验码常数 
                string LastCode = "10X98765432";
                //新身份证号 
                string perIDNew;            perIDNew = perIDSrc.Substring(0, 6);
                //填在第6位及第7位上填上‘1’,‘9’两个数字 
                perIDNew += "19";
                perIDNew += perIDSrc.Substring(6, 9);
                //进行加权求和 
                for (int i = 0; i < 17; i++)
                {
                    iS += int.Parse(perIDNew.Substring(i, 1)) * iW[i];
                }            //取模运算,得到模值 
                int iY = iS % 11;
                //从LastCode中取得以模为索引号的值,加到身份证的最后一位,即为新身份证号。 
                perIDNew += LastCode.Substring(iY, 1);            return perIDNew;
            }
      

  3.   

    public static bool CheckIDCard18(string Id)
            {
                long n = 0;
                if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)
                {
                    return false;
                }
                string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
                if (address.IndexOf(Id.Remove(2)) == -1)
                {
                    return false;
                }
                string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");
                DateTime time = new DateTime();
                if (DateTime.TryParse(birth, out time) == false)
                {
                    return false;
                }
                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();
                int sum = 0;
                for (int i = 0; i < 17; i++)
                {
                    sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
                }
                int y = -1;
                Math.DivRem(sum, 11, out y);
                if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower())
                {
                    return false;
                }
                return true;     
            }
    isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; 
      

  4.   

    isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/; 
    这句是干嘛的复制上去错误了,,,上面的可以用
      

  5.   

            public static string CheckCodeId(string cid)
            {
                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&iexcl?"男":"女"));
                return "true";
            }