【www.gdgbn.com--php常用代码】
function isidcardno(idvalue) {
var len=0, re;
len=idvalue.length;
if (len == 15 && isnumberstring(idvalue,"1234567890"))
re = new regexp(/^(d{6})()?(d{2})(d{2})(d{2})(d{3})$/);
else if (len == 18 && isnumberstring(idvalue,"1234567890xx"))
re = new regexp(/^(d{6})()?(d{4})(d{2})(d{2})(d{3})(d)$/);
else {
// alert("输入的公民身份号码不合法,请重新输入!");
return false;
}
var a = idvalue.match(re);
if (a != null){
if (len==15){
var d = new date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var b = d.getyear()==a[3]&&(d.getmonth()+1)==a[4]&&d.getdate()==a[5];
}else{
var d = new date(a[3]+"/"+a[4]+"/"+a[5]);
var b = d.getfullyear()==a[3]&&(d.getmonth()+1)==a[4]&&d.getdate()==a[5];
}
if (!b) {
//alert("输入的公民身份号码 "+ a[0] +" 的日期不合法,请重新输入!");
//alert("输入的公民身份号码不合法,请重新输入!");
return false;
}
}
if(len == 18 && !verifygmsfhlast(idvalue)){
if (idvalue.substr(17,1)=="x"){
//alert("公民身份号码的最后一位校验码不正确("x"应为大写),请检查!");
}else
{
//alert("输入的公民身份号码不合法,请重新输入!");
}
return false;
}
return true;
}function verifygmsfhlast(sval){
if(sval.length != 18) return false;
var wi = new array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);var vi = new array(1,0,"x",9,8,7,6,5,4,3,2)
var ai = new array(17);
var sum = 0;
var remaining = 0;
var verifynum = "";
//通过循环把18位身份证的前17位存到数组ai中
for(var i = 0; i < 17; i++){
ai[i] = parseint(sval.substring(i,i+1));
}
for(var m = 0; m < ai.length; m++){
//加权
sum = sum + wi[m] * ai[m];
}
remaining = sum % 11;
if(remaining == 2){
verifynum = "x";
}else{
verifynum = vi[remaining];
}
if(verifynum != sval.substring(17,18)){
return false;
}else{
return true;
}
}