asp.net身份证号码验证(转载)
2010-06-26 11:38
295 查看
代码
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; } //取得性别 private int CheckSex(string cid) { int sex; int man; if (cid.Length == 15) { man = int.Parse(cid.Substring(14, 1)); } else if (cid.Length == 18) { man = int.Parse(cid.Substring(16, 1)); } else man = 1; if (man % 2 == 0) sex = 0; else sex = 1; return sex; } //实际运用 int sex = CheckSex(IdCard);//性别 string addr = aCity[int.Parse(Business.DLL.Globals.stringLen(IdCard, 0, 2))];//地址 string aa = GetCard(IdCard);//得到生日并且在下面判断 try { Convert.ToDateTime(aa); } catch (Exception) { ph.PageOutBlock("身份证号码有错误的地方", -1);//个人操作类,大家按自己情况修改 } DateTime MemberBirthday =Convert.ToDateTime( GetCard(IdCard));//会员生日 TimeSpan tm = (TimeSpan)DateTime.Now.Subtract(MemberBirthday);//会员年龄 int age = (int)(tm.Days)/365;//年龄取得整
相关文章推荐
- asp.net身份证号码验证
- asp.net 中国身份证号码验证代码 非正则
- ASP.NET MVC 3.0前后台统一验证类UniValidate,附源码 转载
- 【转载】Asp.Net中基于Forms验证的角色验证授权
- 【转载】Asp.Net 用户验证(自定义IPrincipal和IIdentity)
- 在ASP.NET MVC中对手机号码的验证
- ASP.NET MVC——序列之【身份证验证】
- ASP.Net:基于窗体的身份验证 - 南阳立人的日志 - 网易博客(转载)
- ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)
- uery验证电话号码,邮编,身份证号码(转载和整理)
- asp.net 身份证验证
- 【转载】ASP.NET MVC 3 —— Model远程验证
- asp.net登录页面验证(js方法)【转载】
- javascript或asp实现的判断身份证号码是否正确两种验证方法
- 在ASP.NET MVC中对手机号码的验证
- ASP身份证号码验证函数
- 判断身份证号码是否正确javascript、asp两种验证方法
- 转载: 打造自己的asp.net验证控件
- (转载)ASP.NET MVC结合jQuery插件进行数据验证