javascript身份证验证函数
|
admin
2013年1月29日 12:2
本文热度 4224
|
一、身份证验证
很多网页上都有身份证验证,不过大多是vbscript,javascript的n少。而且还不全面。身份证号码的组成结构,就不用我赘述了吧,在百度上一搜一大把的。
就说怎么验证得了:身份证验证首先是要验证字数、以及除了末尾能用字母外其它的都应该是数字。其次就是两点最重要的,出生年月日和户口所在地。
以下是引用片段:
functionisValidDate(year,month,day)
{
year=parseInt(year,10);
month=parseInt(month,10);
day=parseInt(day,10);
if((month==4)||(month==6)||(month==9)||(month==11))
{if((day<1)||(day>30))
{alert("日期在1-30之间");
return(false);
}
}
else
{if(month!=2)
{if((day<1)||(day>31))
{alert("日期在1-31之间");
return(false);
}
}
else
{//month==2
if((year100)!=0&&(year4==0)||(year100)==0&&(year400)==0)
{if(day>29)
{alert("日期在1-29之间");
return(false);
}
}
else
{if(day>28)
{alert("日期在1-28之间");
return(false);
}
}
}
}
return(true);
}
functionisIdCardNo(s)
{
if((s.length<15)||(s.length==16)||(s.length==17)||(s.length>18)){
window.alert("身份证位数不正确!");
returnfalse;
}
slen=s.length-1;//身份证除最后一位外,必须为数字!
for(i=0;i<slen;i )
{
cc=s.charAt(i);
if(cc<"0"||cc>"9")
{
returnfalse;
}
}
//提取年月日
varstrYear=parseInt(s.substring(6,10))
varstrMonth=parseInt(s.substring(10,12))
varstrDay=parseInt(s.substring(12,14))
//Form1.year的代码根据个人情况变动
varvYear=parseInt(document.Form1.year.options[document.Form1.year.selectedIndex].text)
varvMonth=parseInt(document.Form1.month.options[document.Form1.month.selectedIndex].text)
varvDay=parseInt(document.Form1.day.options[document.Form1.day.selectedIndex].text)
//判定输入的出生年月日是否是正确的日期
if(!isValidDate(strYear,strMonth,strDay))
{
window.alert("请检查身份证是否输入正确!");
returnfalse;
}
//判定是否与出生年月日吻合
if((strYear!=vYear)||(strMonth!=vMonth)||(strDay!=vDay))
{
window.alert("身份证号与输入的出生年月日不符!");
returnfalse;
}
//document.Form1.ceshi.value=strMonth
//document.Form1.ceshi2.value=vMonth
returntrue;
}
因为我不知道身份证上户口所在地的值是用什么规则规定的,而且也没必要验证的那么具体。就没有做户口验证。
不过我觉得,应该是大同小异的吧,只要判定form里户口选择select的值和身份证里户口对应的位数是否相等就ok了。
s.substring(6,10)就是用来截取字段的。从第六位到第十位。
该文章在 2013/1/29 12:02:50 编辑过