function checkId(pId){
//检查身份证号码 Go_Rush(阿舜) from http://ashun.cnblogs.com
var arrVerifyCode = [1,0,"x",9,8,7,6,5,4,3,2];
var Wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var Checker = [1,9,8,7,6,5,4,3,2,1,1];
if(pId.length != 15 && pId.length != 18) return "身份证号共有 15 码或18位";
var Ai=pId.length==18 ? pId.substring(0,17) : pId.slice(0,6)+"19"+pId.slice(6,16);
if (!/^/d+$/.test(Ai)) return "身份证除最后一位外,必须为数字!";
var yyyy=Ai.slice(6,10) , mm=Ai.slice(10,12)-1 , dd=Ai.slice(12,14);
var d=new Date(yyyy,mm,dd) , now=new Date();
var year=d.getFullYear() , mon=d.getMonth() , day=d.getDate();
if (year!=yyyy || mon!=mm || day!=dd || d>now || year<1940) return "身份证输入错误!";
for(var i=0,ret=0;i<17;i++) ret+=Ai.charAt(i)*Wi[i];
Ai+=arrVerifyCode[ret %=11];
return pId.length ==18 && pId != Ai?"身份证输入错误!":Ai;
};
最后,根据身份证号码取 省份,生日,性别就很简单了
至于身份证算法的原理,请参阅:
转载。原文出处:http://www.cnblogs.com/ashun/archive/2007/04/12/idcard-javascript-birthday.html
var id = " 342201570202003 "
// 根据身份证取 省份,生日,性别 Go_Rush(阿舜) from http://ashun.cnblogs.com/
function getInfo(id){
var arr = [ 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 , " 国外 " ]
id = checkId(id)
if (isNaN(id)) return " 错误的身份证号码 "
var id = String(id), prov = arr[id.slice( 0 , 2 )] , sex = id.slice( 14 , 17 ) % 2 ? " 男 " : " 女 "
var birthday = ( new Date(id.slice( 6 , 10 ) , id.slice( 10 , 12 ) - 1 , id.slice( 12 , 14 ))).toLocaleDateString()
return [prov,birthday,sex]
}
alert(getInfo(id))
</ script >