1. Estrutura e representação do número de identificação
1. A estrutura do número
De acordo com as disposições sobre os números de identidade da cidadania no padrão nacional GB11643-1999 da República Popular da China, o número de identidade da cidadania é um código de combinação característico, que consiste em um código de ontologia numérico de dezessete dígitos e um código de verificação de um. O pedido de arranjo é da esquerda para a direita: código de endereço de seis dígitos, data do código de nascimento de oito dígitos, código de sequência de três dígitos e código de verificação de um dígito.
2. Código de endereço
O Código da Divisão Administrativa do Condado (cidade, banner, distrito), onde a residência permanente do objeto de codificação está localizada deve ser implementada de acordo com as disposições do GB/T2260.
3. Data do Código de Nascimento
Indica o ano, o mês e o dia do nascimento do objeto codificado. Deve ser executado de acordo com as disposições do GB/T7408. Não há separador entre os códigos do ano, mês e dia.
4. Código de sequência
Indica que dentro da área identificada pelo mesmo código de endereço, o número da sequência atribuído a pessoas nascidas no mesmo ano, mês e dia. O número ímpar do código de sequência é atribuído aos homens e os números até são atribuídos às mulheres.
5. Código de verificação
(1) A fórmula de soma ponderada para o Código Ontológico de dezessete dígitos
S = soma (ai * wi), i = 0, ..., 16, primeira soma dos pesos dos primeiros 17 dígitos
Ai: indica o valor do número do número do cartão de identificação na i-ésima posição
WI: representa o fator de ponderação na i-ésima posição
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2) Modo de cálculo
Y = mod (s, 11)
(3) Obtenha o código de verificação correspondente através do módulo
Y: 0 1 2 3 4 5 6 7 8 9 10
Código de verificação: 1 0 x 9 8 7 6 5 4 3 2
Ou seja, se o restante for obtido como 1, o último bit de verificação P deve ser o 0 correspondente.
Número de 15 dígitos:
AABBCCYYMMDDDXXS
Número de 18 dígitos:
aabbccyyyymmddxxsp
2. Código de endereço
The first 6 digits of the ID card are administrative division codes (referred to as digital codes) descriptions (refer to "GB/T 2260-2007 Administrative Division Codes of the People's Republic of China"): The principle and structure analysis of the compilation of this digital code adopts a three-layer six-digit hierarchical code structure, which represents the provinces (autonomous regions, municipalities directly under the central government, special regiões administrativas), cidades (regiões, prefeituras autônomas, ligas) e condados (municípios autônomos, cidades em nível de condado, banners, banners autônomos, distritos municipais, áreas florestais, distritos especiais) em meu país de acordo com a hierarquia.
(1) 1º e 2º dígitos: o código da província onde você está localizado, representando uma província, uma região autônoma, um município diretamente sob o governo central e uma região administrativa especial.
Provincial and municipal code table: { 11: "Beijing", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Inner Mongolia", 21: "Liaoning", 22: "Jilin", 23: "Heilongjiang", 31: "Shanghai", 32: "Jiangsu", 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: "
(2) O 3º e 4º dígitos: o Código da Cidade de Níveis Provinciais (Condado), que representa o código de resumo dos distritos e condados sob a jurisdição da cidade, região, prefeitura autônoma, aliança e município diretamente sob o governo central e o código resumido do condado).
―01 ~ 20, 51 ~ 70 significa uma cidade, e os municípios diretamente sob o governo central dizem 01 significa uma cidade e depois de 02 significa um condado de subúrbio dentro da jurisdição do governo municipal;
―21 ~ 50 significa regiões, prefeituras autônomas e alianças;
―90 representa o código resumido das divisões administrativas no nível do condado diretamente sob a provincial (região autônoma).
(3) 5º e 6º dígitos: o Código do Condado de Prefeitura (Cidade), indicando um condado, condado autônomo, cidade do condado, banner, banner autônomo, distrito municipal, área florestal e distrito especial.
―01 ~ 20 significa cidades em nível de condado sob a jurisdição da cidade, região (prefeituras autônomas, ligas) sob a jurisdição de cidades no nível do condado, distritos especiais municipais e divisões administrativas no nível do condado diretamente sob a região provincial (região autônoma). 01 geralmente significa o código de resumo da jurisdição;
―21 ~ 80 significa um condado, condado autônomo, banner, banner autônomo, área florestal e zona especial regional;
81 ~ 99 significa que a província (região autônoma) tem uma cidade no nível do condado sob sua jurisdição.
3. Outros
Número de identificação de 15 dígitos:
Os 7º e 8º dígitos são o ano de nascimento (dois dígitos, representados pelos dois últimos dígitos do ano).
O número 9 e 10 são o mês de nascimento.
Os 11 e 12 representam a data de nascimento.
Os 13º e 14º bits são os códigos seqüenciais, esse é um número aleatório.
O 15º dígito representa gênero, o número ímpar é masculino e o número par é feminino.
Número de identificação de 18 dígitos:
Os 7, 8, 9 e 10 são o ano de nascimento (quatro dígitos).
No. 11 e 12 são os meses de nascimento.
Os 13 e 14 representam a data de nascimento.
Os 15º e 16º bits são os códigos de sequência.
A 17ª posição representa o gênero, os números ímpares são masculinos e os números pares são femininos.
O último bit é o bit de verificação.
4. Exemplo de código JS
var iDCardnoutil = { /*Província, tabela de código municipal* / ProvincyAndCitys: {11: "Pequim", 12: "Tianjin", 13: "hebei", 14: "shanxi", 15: "interno Mongólia ", 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: "Tib et ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinxia ", 71:" Taiwan ", 81:" Hong Kong ", 82:" macao ", 91:" estranho "}, /*todo fator de ponderação* /poderes: [" 7 "," 9 "," 10 "," 5 "," 8 "," 4 "," 2 "2," 1 "," "" "," "" "" 7, "" "" 10, "10", "não" "," "", "" "," 3, "" 7 "," "" 10, "10," não "," "" "," "," "" "" "7", "" "10," 10, "no. 18º código de cálculo*/ paritybit: ["1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"],/*gênero*/ gênero/ gênero: {masculino: "masculino", fêmea: "feminino"},/*CECHET*/ checkadddr: /^[1-9] se (! Verifique) retornar false; if (idcardnoutil.provincyendCitys [parseint (endereçocode.substring (0,2))) {return true; } else {return false; }},/*Verifique o código da data*/checkBirthdayCode: function (birdayCode) {var check = /^.1-9 ]/d {3a ((0[1-9]). se (! Verifique) retornar false; var yyyy = parseint (birdaycode.substring (0,4), 10); var mm = parseint (birdaycode.substring (4,6), 10); var dd = parseint (birdaycode.substring (6), 10); var xdata = nova data (AAA, MM-1, DD); if (xdata> new date ()) {return false; // o aniversário não pode ser maior que a data atual} else if ((xdata.getlyear () == yyyy) && (xdata.getmonth () == mm - 1) && (xdata.getdate () == dd)) {true; } else {return false; }}, /*Calcule o código de calibração* / getParityBit: function (idcardno) {var id17 = idcardno.substring (0,17); /*Ponderado*/ var power = 0; for (var i = 0; i <17; i ++) {Power+= parseInt (id17.Charat (i), 10) * parseint (idcardnoutil.powers [i]); } /*Modelo* / var mod = Power % 11; return iDcardnoutil.paritybit [mod]; }, /*Verifique o código de verificação* / checkParityBit: function (idcardno) {var paritybit = idcardno.charat (17) .toupPercase (); if (idcardnoutil.getparitybit (idcardno) == paritybit) {return true; } else {return false; }},/*Verifique o número de ID de 15 ou 18 bits*/checkIdCardno: function (idcardno) {// Verificação básica de número de identificação de 15 e 18 bits var verifique = /^/d {15}|(/d {17a (/d|x)). se (! Verifique) retornar false; // julga o comprimento a ser de 15 ou 18 bits if (idcardno.length == 15) {return idcardnoutil.check15idcardno (idcardno); } else if (idcardno.length == 18) {return idcardnoutil.check18idcardno (idcardno); } else {return false; }}, // Verifique o número de identificação de 15 dígitos check15idCardno: function (idcardno) {// Verificação básica do número de identificação de 15 dígitos var vercuado = /^1-9 ]/d {7}(0[1-9 ])|(1[-2l ]))(0[1-9 ])|reaira se (! Verifique) retornar false; // Verifique o código do endereço vardedCode = idcardno.substring (0,6); check = idcardnoutil.checkAddressCode (endereço); se (! Verifique) retornar false; var BirdDayCode = '19' + IDCARDNO.SUBSTRING (6,12); // Verifique o código da data de retorno idcardnoutil.checkbirthdaycode (birdaycode); }, // Verifique o número de identificação de 18 dígitos check18idCardno: function (idcardno) {// Verificação básica do formato do número de identificação de 18 dígitos var check = /^[1-9 ]/d {5a} Oh1-9 ]/d {3}(0.1-9] )|(1[0-2 ]))(0.0[1-9 ])|(1-2lge se (! Verifique) retornar false; // verifique o código de endereço var endereçocode = idcardno.substring (0,6); check = idcardnoutil.checkAddressCode (endereço); se (! Verifique) retornar false; // Verifique o código da data var BirdDayCode = IDCARDNO.SUBSTRING (6,14); check = idcardnoutil.checkbirthdaycode (birdaycode); se (! Verifique) retornar false; //Checkcardnoutil.checkparitybit(idcardno); }, formatDatecn: function (dia) {var yyyy = dia.substring (0,4); var mm = dia.Substring (4,6); var dd = dia.substring (6); retornar aaaaa + '-' + mm + '-' + dd; }, // obtenha informações getIdCardInfo: function (idcardno) {var idCardInfo = {gênero: "", // aniversário de gênero: "" // data de nascimento (sim-mm-dd)}; if (idcardno.length == 15) {var aday = '19' + idcardno.substring (6,12); idcardinfo.birthday = idcardnoutil.formatedAtecn (ADAY); if (parseint (idcardno.charat (14))%2 == 0) {idcardinfo.gender = idcardnoutil.genders.female; } else {idcardinfo.gender = idcardnoutil.genders.male; }} else if (idcardno.length == 18) {var aday = idcardno.substring (6,14); idcardinfo.birthday = idcardnoutil.formatedAtecn (ADAY); if (parseint (idcardno.charat (16))%2 == 0) {idcardinfo.gender = idcardnoutil.genders.female; } else {idcardinfo.gender = idcardnoutil.genders.male; }} retornar IDCardInfo; }, /*18 bits a 15 bits* / getId15: function (idcardno) {if (idcardno.length == 15) {return idcardno; } else if (idcardno.length == 18) {return idcardno.substring (0,6) + idcardno.substring (8,17); } else {return null; }}, /*15 bits a 18 bits* / getId18: function (idcardno) {if (idcardno.length == 15) {var id17 = idcardno.substring (0,6) + '19' + idcardno.substring (6); var paritybit = idcardnoutil.getParityBit (ID17); Retornar ID17 + paritybit; } else if (idcardno.length == 18) {return idcardno; } else {return null; }}}; // Verificação do número do cartão de identidade jQuery.validator.addmethod ("idcardno", function (value, elemento) {return this.opcional (element) || idcardnoutil.checkidCardno (value);}, "especifique um número válido de id."); // Obter informações do cartão de identificação var idcardinfo = idcardnoutil.getIdCardInfo (idcardno); alert (idcardinfo.gender + "|" + idcardinfo.birthday); Nota: Ao inserir e determinar se o mesmo cartão de identificação já existe no banco de dados (1) se você estiver inserindo um ID de 15 bits: primeiro descubra se o ID de 15 bits existe. Se não existir, você precisará converter o cartão de identificação de 15 bits em um cartão de identificação de 18 bits. Se ainda não existir, você pode entrar no sistema. (2) Se você estiver entrando em um ID de 18 bits: primeiro descubra se o ID de 18 bits existe. Se não existir, você precisará converter o cartão de identificação de 18 bits em um cartão de identificação de 15 bits. Se ainda não existir, você pode entrar no sistema. Se você encontrar o cartão de identificação de 15 bits correspondente, precisará atualizar o de 15 bits a 18 bits.O exemplo simples acima da verificação JS de cartões de identificação de 15 e 18 bits é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.