Kurang omong kosong, cukup letakkan kode secara langsung, parsing dalam komentar sangat jelas, jadi tidak ada BB di sini.
Salinan kode adalah sebagai berikut:
/*
Menurut ketentuan tentang nomor identitas kewarganegaraan dalam Standar Nasional GB 11643-1999 Republik Rakyat Tiongkok, nomor identitas kewarganegaraan adalah kode kombinasi karakteristik, yang terdiri dari kode ontologi digital tujuh belas digit dan kode verifikasi satu digit. Urutan pengaturan dari kiri ke kanan: kode alamat enam digit, tanggal delapan digit kode kelahiran, kode urutan tiga digit dan kode verifikasi satu digit.
Kode alamat mewakili Kode Divisi Administratif Kabupaten (Kota, Spanduk, dan Distrik) di mana kediaman permanen dari objek kode berada.
Tanggal Kode Kelahiran mewakili tahun, bulan dan hari kelahiran objek yang dikodekan, dan tahun ini diwakili oleh empat digit, dan tidak ada pemisah antara tahun, bulan dan hari.
Kode urutan mewakili nomor urutan yang ditugaskan untuk orang yang lahir pada tahun yang sama, bulan, dan hari di dalam area yang diidentifikasi oleh kode alamat yang sama. Angka ganjil dari kode pesanan ditugaskan untuk pria dan bahkan angka ditugaskan untuk wanita.
Kode verifikasi adalah kode verifikasi yang dihitung berdasarkan kode tujuh belas digit pertama dan sesuai dengan kode verifikasi ISO 7064: 1983.mod 11-2.
Metode perhitungan tanggal lahir.
Kode kartu ID bit pertama kali memperluas tahun kelahiran menjadi 4 bit, hanya menambahkan 19 atau 18, yang mencakup semua orang yang lahir antara tahun 1800 dan 1999;
Mereka yang lahir setelah Tahun Baru harus berusia 18 tahun, dan tidak ada kekhawatiran seperti itu. Adapun mereka yang lahir 1.800 tahun yang lalu, seharusnya tidak ada nomor ID pada waktu itu, ⊙⊙B Khan ...
Berikut ini adalah ekspresi reguler:
Tanggal Lahir 1800-2099 (18 | 19 | 20)?/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/D | 3 [01]))
Kartu ID Ekspresi reguler/^/d {6} (18 | 19 | 20)?/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/D | 3 [01])/d {3} (/d | x) $/i
Aturan verifikasi bit 6 digit kode alamat + 6 digit tanggal lahir + 3-digit nomor urutan
Aturan verifikasi bit kode alamat 6-bit + tanggal 8-bit tanggal lahir + nomor urutan 3-bit + bit verifikasi 1-bit
Formula Aturan Digit Verifikasi: ∑ (Ai × Wi) (Mod 11)……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
Dalam formula (1):
I ----- Menunjukkan nomor urutan angka karakter angka dari kiri termasuk kode verifikasi;
ai ---- mewakili nilai karakter angka pada posisi i-th;
WI ----- Menunjukkan faktor pembobotan pada posisi ke-i, dan nilainya dihitung berdasarkan rumus WI = 2^(n-1) (mod 11).
I 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 4 2 1
*/
// Verifikasi legalitas nomor ID
// Dukung nomor ID 15 digit dan 18 digit
// Pengkodean Alamat Dukungan, Tanggal Lahir, dan Verifikasi Digit Periksa
Function IdentityCoDevalid (kode) {
Var City = {11: "Beijing", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Dalam 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: "Yun Nan ", 54:" Tibet ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinjiang ", 71:" Taiwan ", 81:" Hong Kong ", 82:" Macao ", 91:" asing "};
var tip = "";
var pass = true;
if (! code ||!/^/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 (kode)) {
tip = "kesalahan format nomor kartu identitas";
pass = false;
}
lain if (! city [code.substr (0,2)]) {
Tip = "Kesalahan Pengkodean Alamat";
pass = false;
}
kalau tidak{
// Kartu ID 18 digit perlu diverifikasi untuk bit cek terakhir
if (code.length == 18) {
kode = code.split ('');
// ∑ (ai × wi) (mod 11)
// faktor pembobotan
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// Bit kalibrasi
var parity = [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 = kode [i];
wi = faktor [i];
jumlah += ai * wi;
}
var terakhir = paritas [jumlah % 11];
if (paritas [jumlah % 11]! = kode [17]) {
tip = "periksa kesalahan bit";
pass = false;
}
}
}
if (! pass) waspada (tip);
Return Pass;
}
var c = '130981199312253466';
var res = identitycodevalid (c);
Bagaimana dengan itu? Ini adalah kode verifikasi nomor ID pertama yang sangat komprehensif. Ini bukan dimensi yang sama dengan kode verifikasi lainnya dicari secara online. Tolong ambillah jika Anda membutuhkannya.