아래와 같습니다.
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: "Sichuan"
,52:"Guizhou",53:"Yunnan",54:"Tibet",61:"Shaanxi",62:"Gansu",63:"Qinghai",
64:"Ningxia ",65:" 신장",71:"대만",81:"홍콩",82:"마카오",91:"해외"}
function isCardID(sId){
var iSum=0;
var info="" ;
if(!/^d{17}(d|x)$/i.test(sId)) return "ID의 길이 또는 형식 입력한 카드가 잘못되었습니다.";
sId=sId.replace(/x$/i,"a");
if(aCity[parseInt(sId.substr(0,2))]==null) return "귀하의 신분증 지역이 불법입니다."
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 "신분증에 기재된 생년월일이 잘못되었습니다."
for(var i = 17;i>=0;i --) iSum = (Math.pow (2,i) % 11) * parsInt(sId .charAt(17 - i),11) ;
if(iSum !=1) return "입력한 ID 번호가 잘못되었습니다."
return true; //aCity[parseInt(sId.substr(0 ,2))] "," sBirthday "," (sId.substr(16,1)%2?"남성":"여성")
}