Rumah  >  Artikel  >  hujung hadapan web  >  Pengesahan JavaScript bagi kemahiran javascript nombor ID

Pengesahan JavaScript bagi kemahiran javascript nombor ID

WBOY
WBOYasal
2016-05-16 16:11:251123semak imbas

Apabila kami membina laman web Internet, kami sering menggunakan nombor ID kami semasa mendaftar maklumat peribadi Kami perlu mengesahkan nombor ID, jika tidak, orang lain hanya akan memasukkan nombor dan lulus, yang akan membuatkan anda merasakan bahawa laman web ini sangat. sial.

Terdapat peraturan untuk nombor ID.

Struktur dan bentuk

 1. Struktur nombor
Nombor identiti warganegara ialah kod gabungan ciri, yang terdiri daripada kod badan tujuh belas digit dan kod semak 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.
2. Kod alamat
Menunjukkan kod bahagian pentadbiran daerah (bandar, sepanduk, daerah) tempat kediaman tetap objek pengekodan terletak, dan hendaklah dilaksanakan mengikut peruntukan GB/T2260.
3. Kod tarikh lahir
Menunjukkan tahun, bulan dan hari lahir objek pengekodan Ia dilaksanakan mengikut peruntukan GB/T7408 Tiada pemisah antara kod tahun, bulan dan hari.
4. Kod jujukan
Mewakili nombor jujukan yang diberikan kepada orang yang lahir pada tahun, bulan dan hari yang sama dalam kawasan yang dikenal pasti dengan kod alamat yang sama Nombor ganjil kod jujukan diberikan kepada lelaki, dan nombor genap diberikan kepada perempuan.
5. Kod pengesahan
Berdasarkan kod tujuh belas digit sebelumnya, kod semakan dikira mengikut kod semakan ISO 7064:1983.MOD 11-2.
Kaedah pengiraan

1. Darab 17 digit nombor ID sebelumnya dengan pekali yang berbeza. Pekali dari kedudukan pertama hingga ketujuh belas ialah: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2.
2. Tambahkan hasil darab nombor dan pekali 17 digit ini.
3. Bahagikan jumlah tambah dengan 11. Apakah bakinya?
4. Baki hanya boleh 11 nombor: 0-1-2-3-4-5-6-7-8-9-10. Nombor ID terakhir yang sepadan ialah 1-0-X-9-8-7-6-5-4-3-2.
5. Daripada perkara di atas, kita tahu bahawa jika bakinya ialah 3, angka ke-18 kad pengenalan akan muncul sebagai 9. Jika nombor yang sepadan ialah 2, nombor terakhir pada kad pengenalan ialah angka Rom x.
Contohnya: nombor kad pengenalan lelaki ialah [53010219200508011x].
Mula-mula, kita mendapat hasil tambah bagi 17 digit pertama [(5*7) (3*9) (0*10) (1*5) (0*8) (2*4) (1*2) (9*1) (2*6) (0*3) (0*7) (5*9) (0*10) (8*5) (0*8) (1*4) (1*2) ] ialah 189, kemudian Bahagikan 189 dengan 11 dan hasilnya ialah 189/11=17----2, yang bermaksud bakinya ialah 2. Akhirnya, melalui peraturan yang sepadan, kita boleh tahu bahawa kod semak sepadan dengan baki 2 ialah X. Oleh itu, ia boleh ditentukan bahawa ini adalah nombor ID yang betul.
Perkara di atas diambil dari Ensiklopedia Baidu.

Ini adalah gambar maklumat berkaitan yang terdapat di Internet.

Mengikut maklumat yang diketahui, kami boleh menulis pelaksanaan dalaman kaedah ini dalam js. Pengesahan 17 digit pertama agak mudah dilaksanakan, jadi saya tidak akan pergi ke butiran dan menumpukan pada digit terakhir kod semak.

Salin kod Kod adalah seperti berikut:

// Pengesahan nombor ID
fungsi ialahIdCard(cardid) {
// Ungkapan biasa kad ID (18 bit)
var isIdCard2 = /^[1-9]d{5}(19h{2}|[2-9]h{3})((0d)|(1[0-2]))(([0|1 |2]d)|3[0-1])(d{4}|d{3}X)$/i;
var stard = "10X98765432"; //Nombor ID terakhir
var pertama = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //1-17 pekali
var sum = 0;
Jika (!isIdCard2.test(cardid)) {
          pulangkan palsu;
}
var year = cardid.substr(6, 4);
var month = cardid.substr(10, 2);
var day = cardid.substr(12, 2);
var birthday = cardid.substr(6, 8);
Jika (hari lahir != dateToString(Tarikh baharu(tahun '/' bulan '/' hari))) { //Sahkan sama ada tarikh itu sah
          pulangkan palsu;
}
untuk (var i = 0; i < cardid.length - 1; i ) {
         jumlah = kad [i] * pertama[i];
}
hasil var = jumlah % 11;
var last = stard[hasil]; //Nombor ID terakhir yang dikira
Jika (cardid[cardid.length - 1].toUpperCase() == last) {
         kembali benar;
} lain {
          pulangkan palsu;
}
}
//Tukar tarikh kepada rentetan dan kembalikan format tarikh 20080808
fungsi dateToString(tarikh) {
Jika (tarikh instanceof Date) {
        var year = date.getFullYear();
        var bulan = date.getMonth() 1;
bulan = bulan < 10 ? '0' bulan: bulan;
        var day = date.getDate();
hari = hari < 10 ? '0' hari: hari;
          tahun pulangan bulan hari;
}
Kembalikan '';
}

Hanya kad ID 18 digit disahkan di sini dan kad ID generasi pertama 15 digit tidak boleh digunakan.

Kesahihan tarikh juga disahkan di sini Untuk tarikh haram seperti 0230, 0431, dll., pengesahan tidak akan lulus.

Kami juga boleh menambah kaedah ini pada pengesahan jquery untuk memudahkan pengesahan.

Tulis kaedah pengesahan pengesahan jquery tersuai

Salin kod Kod adalah seperti berikut:

// Pengesahan nombor ID
jQuery.validator.addMethod("isIdCard",
fungsi(nilai, elemen) {
Kembalikan this.optional(elemen) || (isIdCard(value));
},
"Nombor ID haram!");

Mari kita ambil demo ringkas dan lihat cara ia berfungsi.

Salin kod Kod adalah seperti berikut:

 
 
    
        
        
             身份证号校验