JSFiddle - React, Tailwind, and code Playground
by timhuang
JavaScript
var pidAlpha = {
char: ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'],
name: ['臺北市','臺中市','基隆市','臺南市','高雄市','新北市','宜蘭縣','桃園縣','嘉義市','新竹縣','苗栗縣','臺中縣','南投縣','彰化縣','新竹市','雲林縣','嘉義縣','臺南縣','高雄縣','屏東縣','花蓮縣','臺東縣','金門縣','澎湖縣','陽明山管理局','連江縣'],
value: ['10','11','12','13','14','15','16','17','34','18','19','20','21','22','35','23','24','25','26','27','28','29','32','30','31','33']
}
var weight = [1,9,8,7,6,5,4,3,2,1,1];
function checkPid(pid){
var patt = /^([A-Z]{1})([0-9]{9})$/;
if(!patt.test(pid)){
return {err: true, message: 'not pid format'};
}
var index = pidAlpha.char.indexOf(pid.charAt(0));
if(index==-1){
return {err: true, message: 'not in first character'};
}
var npid = pidAlpha.value[index] + pid.substring(1,10);
var sum = 0;
for(var i=0;i<11;i++){
sum += weight[i] * parseInt(npid.charAt(i));
}
if(sum % 10 ==0){
return {err: null, message: 'a valid pid with '+sum+ ' in '+pidAlpha.name[index]};
}else{
return {err: true, message: 'not valid pid'};
}
}
alert(JSON.stringify(checkPid('X111111112')));