一、身份證驗證
很多網(wǎng)頁上都有身份證驗證,不過大多是vbscript,javascript的n少。而且還不全面。身份證號碼的組成結構,就不用我贅述了吧,在百度上一搜一大把的。
就說怎么驗證得了:身份證驗證首先是要驗證字數(shù)、以及除了末尾能用字母外其它的都應該是數(shù)字。其次就是兩點最重要的,出生年月日和戶口所在地。
以下是引用片段:
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("身份證位數(shù)不正確!");
returnfalse;
}
slen=s.length-1;//身份證除最后一位外,必須為數(shù)字!
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的代碼根據(jù)個人情況變動
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;
}
因為我不知道身份證上戶口所在地的值是用什么規(guī)則規(guī)定的,而且也沒必要驗證的那么具體。就沒有做戶口驗證。
不過我覺得,應該是大同小異的吧,只要判定form里戶口選擇select的值和身份證里戶口對應的位數(shù)是否相等就ok了。
s.substring(6,10)就是用來截取字段的。從第六位到第十位。
該文章在 2013/1/29 12:02:50 編輯過