如题求js判断身份证号码,包括15位 18位 17+x 的判断
解决方案 »
- js 数组取元素
- sql:分页查询 + 分组 + 排序 ===》在线等待
- 好学者再次发问--关于数组中值的变换
- tomcat出现错误:java.sql.SQLException:After end of result set
- 为什么jsp 页面变量没有被替换啊?
- 求助:javascript 能否检测系统是否安装了WORD2003读取word2007文件的插件
- jspsmartupload的下载问题。。
- ==有关javax包编译时找不到的问题==
- 我想在JSP中调用,用VB写的ACTIVE控件可以吗?还有JAVA有没有打印控件?
- 求助数组计算问题?
- 我想从某个接口中接受某些数据,并显示在网页上,该怎么写?
- jsp FCKEditor 瘦身问题
{
//判断身份证号码格式函数
//公民身份号码是特征组合码,
//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码//身份证号码长度判断
if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18)
{
alert(\"填写的身份证号码长度不正确,请重新填写!\");
return false;
}
//身份证号码最后一位可能是超过100岁老年人的X.X也可以代表是阿拉伯数字10的意思
//所以排除掉最后一位数字进行数字格式测试,最后一位数字有最后一位数字的算法var Ai;
if(StrNumber.length==18)
{
Ai = StrNumber.substring(0,17);
}
else
{
Ai =StrNumber.substring(0,6)+\"19\"+StrNumber.substring(6,9);
}
//调用数字判断函数IsNumeric()
if(IsNumeric(Ai)==false)
{
alert(\"身份证号码数字字符串不正确,请重新填写!\");
return false;
}var strYear,strMonth,strDay,strBirthDay;
strYear = parseInt(Ai.substr(6,4));
strMonth = parseInt(Ai.substr(10,2)) ;
strDay = parseInt(Ai.substr(12,2));
//调用日期判断函数IsValidDate()
if (IsValidDate(strYear,strMonth,strDay)==false)
{
alert(\"身份证号码\"+Ai+\"日期格式年份\"+strYear+\"月份\"+strMonth+\"日\"+strDay+\"不正确,请重新填写!\");
return false;
}var arrVerifyCode = new Array(\"1\",\"0\",\"x\",\"9\",\"8\",\"7\",\"6\",\"5\",\"4\",\"3\",\"2\");
var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
var k,TotalmulAiWi=0;
for (k=0; k<17;k++)
{
TotalmulAiWi = TotalmulAiWi + parseInt(Ai.substr(k,1)) * Wi[k];
}
//alert(\"身份证号码最后一位的识别码是:\"+TotalmulAiWi);
var modValue =TotalmulAiWi % 11 ;
var strVerifyCode = arrVerifyCode[modValue];
Ai = Ai+strVerifyCode;
//alert(\"身份证号码\"+StrNumber+\"与正确的号码\"+Ai+\"一致!\");
if((StrNumber.length==18)&&(StrNumber!=Ai))
{
alert(\"身份证号码\"+StrNumber+\"与正确的号码\"+Ai+\"不一致,请重新填写!\");
return false;
}
return true;}
//数字判断函数IsNumeric()
function IsNumeric(oNum)
{
if(!oNum) return false;
var strP=/^\\d+(\\.\\d+)?$/;
if(!strP.test(oNum)) return false;
try{
if(parseFloat(oNum)!=oNum) return false;
}
catch(ex)
{
return false;
}
return true;
}
//有效年份判断函数其余楼主参考http://www.cn17xue.com/wangyesheji/html/731.html
很久很久以前专门研究过,喝喝,可以看看下面的JS代码:<script>
var aCity={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:"国外"}
function cidInfo(sId){
var iSum=0
var info=""
if(!/^\d{17}(\d|x)$/i.test(sId))
return false;
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));
var d=new Date(sBirthday.replace(/-/g,"/"))
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
return "Error:非法生日";
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11)
if(iSum%11!=1)
return "Error:非法证号";
return aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
}
</script>