Berhenti bercakap kosong dan pergi terus ke kod Analisis sangat jelas dalam komen, jadi tidak akan ada BB di sini.
/*
Menurut peraturan mengenai nombor identiti warganegara dalam Piawaian Kebangsaan Republik Rakyat China GB 11643-1999, nombor identiti warganegara ialah kod gabungan ciri, yang terdiri daripada kod badan tujuh belas digit dan kod semakan satu digit. Susunan dari kiri ke kanan ialah: kod alamat enam digit, kod tarikh lahir lapan digit, kod jujukan tiga digit dan kod semak satu digit.
Kod alamat mewakili kod bahagian pentadbiran daerah (bandar, sepanduk, daerah) tempat kediaman tetap objek pengekodan berada.
Kod tarikh lahir mewakili tahun, bulan dan hari apabila objek pengekodan dilahirkan, di mana tahun diwakili oleh empat digit dan tiada pemisah digunakan antara tahun, bulan dan hari.
Kod jujukan menunjukkan nombor urutan yang diberikan kepada orang yang dilahirkan pada tahun, bulan dan hari yang sama dalam kawasan yang dikenal pasti oleh kod alamat yang sama. Nombor ganjil dalam kod jujukan diberikan kepada lelaki, dan nombor genap diberikan kepada wanita.
Kod semakan ialah kod semakan yang dikira berdasarkan tujuh belas digit sebelumnya dan mengikut kod semakan ISO 7064:1983.MOD 11-2.
Bagaimana untuk mengira tarikh lahir.
Kod kad ID digit mula-mula memanjangkan tahun lahir kepada 4 digit Cuma tambah 19 atau 18, supaya semua orang yang lahir antara 1800 dan 1999 disertakan;
Mereka yang lahir selepas 1800 mestilah dalam angka ke-18 dan tidak mengalami masalah ini Bagi mereka yang lahir sebelum 1800, mereka mungkin tidak mempunyai nombor ID pada masa itu, ⊙﹏⊙bhan...
Berikut ialah ungkapan biasa:
Tarikh lahir 1800-2099 (18|19|20)?h{2}(0[1-9]|1[12])(0[1-9]|[12]h|3[01])
Ungkapan biasa kad ID/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[12]d|3 [ 01])d{3}(d|X)$/i
Peraturan pengesahan digit 6 digit kod alamat 6 digit tarikh lahir 3 digit nombor urutan
Peraturan pengesahan bit: kod alamat 6 digit, tarikh lahir 8 digit, nombor urutan 3 digit, digit semak 1 digit
Semak formula peraturan digit: ∑(ai×Wi)(mod 11)…………………………………………(1)
Dalam formula (1):
i---- mewakili nombor urutan kedudukan aksara nombor dari kiri ke kanan termasuk kod semak
ai---- mewakili nilai aksara nombor pada kedudukan ke-i;
Wi---- mewakili faktor pemberat pada kedudukan ke-i, dan nilainya dikira mengikut formula Wi=2^(n-1) (mod 11).
saya 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
*/
//Pengesahan kesahihan nombor ID
//Menyokong nombor ID 15 digit dan 18 digit
//Sokong pengekodan alamat, tarikh lahir, semak pengesahan digit
fungsi IdentityCodeValid(kod) {
var city={11:"Beijing",12:"Tianjin",13:"Hebei",14:"Shanxi",15:"Inner Mongolia",21:"Liaoning",22:"Jilin",23:" Heilongjiang ",31:"Shanghai",32:"Jiangsu",33:"Zhejiang",34:"Anhui",35:"Fujian",36:"Jiangxi",37:"Shandong",41:"Henan" , 42:"Hubei",43:"Hunan",44:"Guangdong",45:"Guangxi",46:"Hainan",50:"Chongqing",51:"Sichuan",52:"Guizhou",53 : "Yunnan",54:"Tibet",61:"Shaanxi",62:"Gansu",63:"Qinghai",64:"Ningxia",65:"Xinjiang",71:"Taiwan",81:" Hong Kong ",82:"Macau",91:"Luar Negara"};
var tip = "";
var pass= benar;
if(!kod || !/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[ 12]d|3[01])d{3}(d|X)$/i.test(kod)){
tip = "Format nombor kad pengenalan salah";
lulus = palsu;
}
else if(!city[code.substr(0,2)]){
tip = "Pengekodan alamat salah";
lulus = palsu;
}
lain{
//Kad ID 18 digit perlu mengesahkan digit semakan terakhir
if(kod.panjang == 18){
kod = code.split('');
//∑(ai×Wi)(mod 11)
//Faktor pemberat
faktor var = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//Semak digit
pariti var = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
untuk (var i = 0; i < 17; i )
{
ai = kod[i];
wi = faktor[i];
jumlah = ai * wi;
}
var last = pariti[jumlah % 11];
if(pariti[jumlah % 11] != kod[17]){
tip = "Semak ralat digit";
lulus =false;
}
}
}
if(!pass) alert(tip);
pas balik;
}
var c = '130981199312253466';
var res= IdentityCodeValid(c);
Bagaimana pula? Ia adalah kod pengesahan nombor ID pertama yang sangat komprehensif. Ia tidak sama dengan kod pengesahan lain yang ditemui dalam talian, cuma ambil dan gunakannya jika anda memerlukannya.