asp.net中验证身份证号

问题描述

asp.net中,如何用js或类函数来验证输入的身份证号呢?拜托各位高手指点~

解决方案

解决方案二:
3PublicClassSFZ4Private_codeAsString56PublicSubNew(ByValcodeAsString)7_code=code8EndSub910PublicFunctionVerify()AsBoolean11'返回结果12DimresultAsBoolean=False13DimdatestrAsSystem.Text.StringBuilder=NewSystem.Text.StringBuilder1415SelectCase_code.Length16Case1517'取得日期字符串18datestr.Append("19")19datestr.Append(_code.Substring(6,2))20datestr.Append("-")21datestr.Append(_code.Substring(8,2))22datestr.Append("-")23datestr.Append(_code.Substring(10,2))24'判断是否为日期25result=IsDate(datestr.ToString())26Case1827'取得日期字符串28datestr.Append(_code.Substring(6,4))29datestr.Append("-")30datestr.Append(_code.Substring(10,2))31datestr.Append("-")32datestr.Append(_code.Substring(12,2))33'判断是否为日期34result=IsDate(datestr.ToString())35IfresultThen36'判断校验码是否正确37If_code.Substring(17,1)=lastCodeVerify(_code.Substring(0,17))Then38result=True39Else40result=False41EndIf42EndIf43CaseElse44result=False45EndSelect4647Verify=result48EndFunction4950PrivateFunctionlastCodeVerify(ByVala_sfzAsString)AsString51'获得校验码52DimlastcodeAsString53Dimls_sfzAsString54Dimi,li_ai,li_wi,li_sum,li_mod,li_resultAsInteger5556ls_sfz=a_sfz57Ifls_sfz.Length=15Orls_sfz.Length=17Then58Ifls_sfz.Length=15Then59'应该不会执行60ls_sfz=ls_sfz.Substring(0,6)+"19"+ls_sfz.Substring(6,9)61EndIf6263Fori=2To1864li_ai=CInt(ls_sfz.Substring(19-i-1,1))65li_wi=System.Math.Pow(2,i-1)Mod1166li_sum=li_sum+li_ai*li_wi67Next6869li_mod=li_sumMod1170li_result=12-li_mod7172Ifli_result>=10Then73Ifli_result=10Then74lastcode="X"75Else76li_result=li_result-1177lastcode=CStr(li_result)78EndIf79Else80lastcode=CStr(li_result)81EndIf82Else83lastcode="E"84EndIf8586lastCodeVerify=lastcode8788EndFunction89EndClass
解决方案三:
/*身份证判断函数,是返回true,不是返回false15位数字,18位数字或者最后一位为X(大写)*/functionisSFZ(str){if(""==str){returnfalse;}if(str.length!=15&&str.length!=18){//身份证长度不正确returnfalse;}if(str.length==15){if(!isNumber(str)){returnfalse;}}else{str1=str.substring(0,17);str2=str.substring(17,18);alpha="X0123456789";if(!isNumber(str1)||alpha.indexOf(str2)==-1){returnfalse;}}returntrue;}/*

解决方案四:
想验证这个,你必须身份证号的生成规则才行,可是我也不知道啊
解决方案五:
privatestringCheckCidInfo(stringcid){string[]aCity=newstring[]{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,"国外"};doubleiSum=0;stringinfo="";System.Text.RegularExpressions.Regexrg=newSystem.Text.RegularExpressions.Regex(@"^d{17}(d|x)$");System.Text.RegularExpressions.Matchmc=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(inti=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¡"男":"女"));}
解决方案六:
这个好像不知道,想像中不可以实现的办法就是连上公安部的电脑,进行数据比较
解决方案七:
functioncheckIdcard(idcard){varErrors=newArray("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");vararea={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}varidcard,Y,JYM;varS,M;varidcard_array=newArray();idcard_array=idcard.split("");//地区检验if(area[parseInt(idcard.substr(0,2))]==null)returnErrors[4];alert(Errors[4]);//身份号码位数及格式检验switch(idcard.length){case15:if((parseInt(idcard.substr(6,2))+1900)%4==0||((parseInt(idcard.substr(6,2))+1900)%100==0&&(parseInt(idcard.substr(6,2))+1900)%4==0)){ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性}else{ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性}if(ereg.test(idcard))returnErrors[0];alert(Errors[0]);elsereturnErrors[2];alert(Errors[2]);break;case18://18位身份号码检测//出生日期的合法性检查//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))if(parseInt(idcard.substr(6,4))%4==0||(parseInt(idcard.substr(6,4))%100==0&&parseInt(idcard.substr(6,4))%4==0)){ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式}else{ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式}if(ereg.test(idcard)){//测试出生日期的合法性//计算校验位S=(parseInt(idcard_array[0])+parseInt(idcard_array[10]))*7+(parseInt(idcard_array[1])+parseInt(idcard_array[11]))*9+(parseInt(idcard_array[2])+parseInt(idcard_array[12]))*10+(parseInt(idcard_array[3])+parseInt(idcard_array[13]))*5+(parseInt(idcard_array[4])+parseInt(idcard_array[14]))*8+(parseInt(idcard_array[5])+parseInt(idcard_array[15]))*4+(parseInt(idcard_array[6])+parseInt(idcard_array[16]))*2+parseInt(idcard_array[7])*1+parseInt(idcard_array[8])*6+parseInt(idcard_array[9])*3;Y=S%11;M="F";JYM="10X98765432";M=JYM.substr(Y,1);//判断校验位if(M==idcard_array[17])returnErrors[0];//检测ID的校验位elsereturnErrors[3];alert(Errors[3]);}elsereturnErrors[2];alert(Errors[2]);break;default:returnErrors[1];alert(Errors[1]);break;}}
解决方案八:
第一个发的是VB的到中国统计网站查询代码
解决方案九:
这些可以用于asp.net么?
解决方案十:
引用8楼xiongrui79的回复:

这些可以用于asp.net么?

当然可以了。正则在哪儿都可以用到
解决方案十一:
2楼的if(""==str)..应该是(str=="")吧..
解决方案十二:
引用10楼xiongrui79的回复:

2楼的if(""==str)..应该是(str=="")吧..

这样也可以
解决方案十三:
感觉主要是两个验证:1.是15位或18位数字的正则表达式的验证2.验证身份证中年月日是正常的年月日的日期验证。
解决方案十四:
用正则表达式1.验证身份证号(18位):^d{}18$2.验证身份证号(15位):^d{15}3.验证身份证号(15位或18位):^d{15}|d{}18$
解决方案十五:
我一直都搞不清楚"^d{15}¦d{}18$"这个到底要怎么用...泪奔...
解决方案:
我在6楼给你提供了正则表达式和用法,自己看看就明白了
解决方案:
//身份证正则表达式(15位)isIDCard1=/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/;//身份证正则表达式(18位)isIDCard2=/^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/;再PS个这个是别人的,我们没有用,更健壮的地区和身份证的关系也判断到还有性别<script>varaCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}functioncidInfo(sId){variSum=0varinfo=""if(!/^d{17}(d|x)$/i.test(sId))returnfalse;sId=sId.replace(/x$/i,"a");if(aCity[parseInt(sId.substr(0,2))]==null)return"Error:非法地区";sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));vard=newDate(sBirthday.replace(/-/g,"/"))if(sBirthday!=(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()))return"Error:非法生日";for(vari=17;i>=0;i--)iSum+=(Math.pow(2,i)%11)*parseInt(sId.charAt(17-i),11)if(iSum%11!=1)return"Error:非法证号";returnaCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")}</script>

时间: 2024-05-16 00:29:44

asp.net中验证身份证号的相关文章

利用ASP验证身份证号是否正确的代码

本文非原创,只是综合了两三个文章整理在一起的. 我们要验证身份证号是否正确,就得先了解身份证号的含意. 身份证号都代表什么意思? 1.号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 2.地址码(前六位数)表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 3.出生日期码(第七位至十四位)表示编码对象出生的年.月.日,按GB/T7408的规定执行

jquery插件validation实现验证身份证号等

  这篇文章主要介绍了jquery插件validation实现验证身份证号.护照.电话号码.email十分的简单实用,有需要的小伙伴可以参考下. 先推荐一个基于bootstrap的jQuery validation插件:http://thrilleratplay.github.io/jquery-validation-bootstrap-tooltip/ jQuery validation添加验证规则 validata.html ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1

jquery插件validation实现验证身份证号等_jquery

先推荐一个基于bootstrap的jQuery validation插件:http://thrilleratplay.github.io/jquery-validation-bootstrap-tooltip/ jQuery validation添加验证规则 validata.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/D

锋利的js之验证身份证号

原文:锋利的js之验证身份证号 我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.  2.地址码  表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行.  3.出生日

超精准的javascript验证身份证号的具体实现方法_javascript技巧

编写程序前先来了解下身份证号的构成: 身份证号分为两种,旧的为15位,新的为18位. 身份证15位编码规则:dddddd yymmdd xx p    其中 dddddd:地区码    yymmdd: 出生年月日    xx: 顺序类编码,无法确定    p: 性别,奇数为男,偶数为女: 身份证18位编码规则:dddddd yyyymmdd xxx y    其中 dddddd:地区码    yyyymmdd: 出生年月日     xxx:顺序类编码,无法确定,奇数为男,偶数为女    y: 校

ASP.NET中验证控件的使用方法_实用技巧

对于这些常用的控件有效性验证,在Asp.Net中有单独的验证控件可供使用.他们可以满足一般的,诸如非空,范围.比较等的验证,为用户登录页面添加输入数据验证功能和验证码功能.  验证控件:    Asp.Net中内置的验证控件有:RequiredFieldValidation.RangeValidation.RegularExpressValidation.CompareValidation.CustomValidation和ValidationSummary等六种.其中用户自定义验证控件,由于并

在ASP应用中验证用户身份

    交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息.    一.示例站点概貌    本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为   ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本

在ASP应用中验证用户身份(4)

在ASP应用中验证用户身份(4) 作者:仙人掌工作室 四.在安全页面中检查是否已经验证用户身份 每一个受保护的页面都应该检查用户身份是否已经验证.这是因为用户有可能为这些页面做了书签,如果不在这些页面中验证用户已经登录,就不能保证浏览页面的是经过授权的合法用户. 为检查是否已经验证用户身份,可以测试在signUserOn中创建的Session("User")是否是一个对象.类型是否正确等.如果上述测试失败,则重定向浏览器到登录页面signOn.asp.对于不支持Cookies的浏览器,

java 地图-java中输入身份证号,怎么显示地图上的省份

问题描述 java中输入身份证号,怎么显示地图上的省份 1.在面板中输入身份证号,就会在地图上所在省份显示性别,年龄.2.点击地图上的省份,然后就会在面板上反馈省份代号.急求,菜鸟刚入门