以下のコードをプロジェクトにコピーし、checkIdcardメソッドを直接呼び出し、ID番号を渡す。もし "Verified!"が返されたら、そのID番号は合法です。
#GoogleAD
関数checkIdcard(idcard) { を呼び出す。
var Errors = new Array(
"検証に合格しました!",
"ID番号の数字が間違っています!",
"ID番号の生年月日が範囲外、または不正な文字が含まれています!",
「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 retflag = false;
var idcard, Y, JYM.
var idcard, Y, JYM; var S, M; var idcard_array = Y, JYM.
var idcard_array = new Array();
idcard_array = idcard.split("");
// 領域テスト
if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4];
// ID番号の桁数と書式チェック
switch (idcard.length) { // ID番号の桁数とフォーマットチェック
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) % 0 == 0); // ID番号の桁数とフォーマットチェック。
100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) { // ID 番号の桁数とフォーマットチェック。
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 Errors[0];
else {
return Errors[2];
}
break; case 18: return Errors[0]; else { return Errors[2]; }.
case 18.
//18 桁の ID 番号の検出
// 生年月日の正当性チェック
//leap year month day:((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]))
//PingYiYuanDao:((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
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 = "10x98
jym = "10x98765432";
M = JYM.substr(Y, 1); // パリティビットの判定
if (M == idcard_array[17]) return Errors[0]; //IDのチェックデジットを検出する。
else return Errors[3];
}
else return Errors[2];
break;
デフォルトでは
return Errors[1]; } else return Errors[2]; break; default.
break; default: return Errors[1]; break
}
}
オリジナルコンテンツ、帰属表示付きで複製:スマートツールキット