function checkIdcard(idcard){
var Errors=new Array(
"認証に合格しました!",
"ID 番号の桁数が間違っています!",
"の生年月日ID 番号が範囲外または不正な文字が含まれています!",
"ID カード番号検証エラー!",
"ID カード領域が不正です!"
);
var area={11: "北京"、12:"天津"、13:"河北"、14:"山西"、15:"内モンゴル"、21:"遼寧"、22:"吉林"、23:"黒竜江省"、31:"上海」、32:「江蘇」、33:「浙江」、34:「安徽」、35:「福建」、36:「江西」、37:「山東」、41:「河南」、42:「湖北」 、43:「湖南」、44:「広東」、45:「広西」、46:「海南」、50:「重慶」、51:「四川」、52:「貴州」、53:「雲南」、54 :「チベット」、61:「陝西省」、62:「甘粛省」、63:「青海省」、64:「寧夏」、65:「新疆」、71:「台湾」、81:「香港」、82: "マカオ",91:"海外"}
var idcard,Y,JYM;
var idcard_array = new Array(); ("");
//エリア検査
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]; [4]);
//ID 番号の桁と形式のチェック
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2) )) 1900) % 4 == 0 || ((parseInt(idcard.substr(6,2)) 1900) % 100 == 0 && (parseInt(idcard.substr(6,2)) 1900) % 4 == 0 )){
ereg= /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0 [1-9]|[1- 2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0- 9]|30)|02(0 [1-9]|[1-2][0-9]))[0-9]{3}$/;//生年月日の正当性をテストします
} else {
ereg=/^ [1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1 -9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9] |30)|02(0[1 -9]|1[0-9]|2[0-8]))[0-9]{3}$/;//生年月日の正当性をテストします
if( ereg.test(idcard)) return
alert(Errors[0]);
else return Errors[2]; 2]);
break;
ケース 18:
//18 桁の ID 番号検出
//生年月日の正当性チェック
//閏年、月、日: ( ((01|03|05|07|08|10| 12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09| 11)(0[1-9]|[1-2 ][0-9]|30)|02(0[1-9]|[1-2][0-9]))
//通常の年、月、日: ((01|03|05|07| 08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])| (04|06|09|11)(0[1-9]| [1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0 -8]))
if ( parseInt(idcard.substr(6 ,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard. substr(6,4))%4 == 0 )){
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03| 05|07|08|10|12)(0[1-9] |[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30) |02(0[1-9]|[1-2][0-9]))[0-9]{3}[0- 9Xx]$/;//閏年の生年月日を表す従来の正規表現
} else {
ereg=/^[1-9][0-9]{5}19[0-9]{2 }((01|03|05|07|08|10|12) (0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09 |11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[ 0-9]{3}[0-9Xx]$/;// 通常の年の生年月日の正当性を示す正規表現
}
if(ereg.test(idcard)){// 正当性をテストする生年月日
//チェックデジットを計算
S = (parseInt (idcard_array[0]) parseInt(idcard_array[10])) * 7
(parseInt(idcard_array[1]) parseInt(idcard_array[11]) ])) * 9
(parseInt(idcard_array[2]) parseInt(idcard_array[12])) * 10
(parseInt(idcard_array[3]) parseInt(idcard_array[13])) * 5
(parseInt(idcard_array[4]) parseInt(idcard_array[14])) * 8
(parseInt(idcard_array[5]) parseInt(idcard_array[15])) * 4
(parseInt(idcard_array[6]) parseInt(idcard_array[16])) * 2
parseInt(idcard_array[7 ]) * 1
parseInt(idcard_array[8]) * 6
parseInt(idcard_array[9]) * 3 ; Y = S % 11;
M = "F";
JYM = "10X98765432"; //チェックデジットを判定します
if(M == idcard_array[17]) return Errors[0]; //ID チェック桁を検出します
else return Errors[3]);エラー[2];
ブレーク;
エラー[1]; ;
}
}