Menos bobagem, basta colocar o código diretamente, a análise nos comentários é muito clara, para que não haja BB aqui.
A cópia do código é a seguinte:
/*
De acordo com as disposições sobre os números de identidade da cidadania no padrão nacional GB 11643-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 digital de dezessete dígitos e um código de verificação de um dígito. 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.
O código de endereço representa o Código da Divisão Administrativa do condado (cidade, banner e distrito), onde está localizada a residência permanente do objeto codificado.
A data do código de nascimento representa o ano, o mês e o dia do nascimento do objeto codificado, e o ano é representado por quatro dígitos, e não há separador entre o ano, mês e dia.
O código de sequência representa o número da sequência atribuído a pessoas nascidas no mesmo ano, mês e dia na área identificadas pelo mesmo código de endereço. Os números ímpares dos códigos de ordem são atribuídos aos homens e os números até são atribuídos às mulheres.
O código de verificação é um código de verificação calculado com base nos primeiros dezessete códigos de dígitos e de acordo com o código de verificação da ISO 7064: 1983.Mod 11-2.
Método de cálculo da data de nascimento.
O código do cartão de identificação do bit primeiro expande o ano de nascimento para 4 bits, simplesmente adicionando 19 ou 18, que inclui todas as pessoas nascidas entre 1800 e 1999;
Os nascidos após o ano novo devem ter 18 anos, e não há tanta preocupação. Quanto aos nascidos 1.800 anos atrás, não deve haver número de identificação naquele momento, ⊙⊙b Khan ...
A seguir, a expressão regular:
Data de nascimento 1800-2099 (18 | 19 | 20)?/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/d | 3 [01]))
Cartão de identificação Expressão regular/^/d {6} (18 | 19 | 20)?/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/d | 3 [01])/d {3} (/d | x) $/i
Regras de verificação de bits Código de endereço de 6 dígitos + Data de nascimento de 6 dígitos + número de sequência de 3 dígitos
Regras de verificação de bits Código de endereço de 6 bits + data de nascimento de 8 bits + número de sequência de 3 bits + bit de verificação de 1 bit
Fórmula da regra do dígito de verificação: ∑ (ai × wi) (mod 11) 11)… …
Na fórmula (1):
I ----- indica o número de sequência numérica do caractere número da esquerda, incluindo o código de verificação;
ai ---- representa o valor do caractere numérico na i-ésima posição;
Wi ----- mostra o fator de ponderação na I -th Position, e seu valor é calculado com base na fórmula 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 2 1
*/
// Verificação da legalidade do número de identificação
// suporta números de identificação de 15 dígitos e 18 dígitos
// codificação de endereço de suporte, data de nascimento e verificação de dígitos de cheques
função identitycodevalid (code) {
Var City = {11: "Pequim", 12: "Tianjin", 13: "Hebei", 14: "Shanxi", 15: "Inner 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: "Yun Nan ", 54:" Tibete ", 61:" Shaanxi ", 62:" Gansu ", 63:" Qinghai ", 64:" Ningxia ", 65:" Xinjiang ", 71:" Taiwan ", 81:" Hong Kong ", 82:" Macao ", 91:" Foreign "};
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 (code)) {
tip = "Erro de formato do número do número de identidade";
pass = false;
}
caso contrário, se (! City [code.substr (0,2)]) {
tip = "Erro de codificação de endereço";
pass = false;
}
outro{
// O cartão de identificação de 18 dígitos precisa ser verificado para o último bit de verificação
if (code.length == 18) {
code = code.split ('');
// ∑ (ai × wi) (mod 11)
// fator de ponderação
var fator = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 4, 2];
// bit de calibração
var parity = [1, 0, 'x', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i <17; i ++)
{
ai = código [i];
Wi = fator [i];
soma += ai * wi;
}
var last = paridade [soma % 11];
if (paridade [soma % 11]! = código [17]) {
tip = "Verifique o erro do bit";
pass = false;
}
}
}
if (! Passe) alerta (ponta);
passagem de retorno;
}
var c = '130981199312253466';
var res = identityCoDevalid (c);
Que tal? É um código de verificação do número de primeiro identificação muito abrangente. Não é a mesma dimensão que os outros códigos de verificação pesquisados on -line. Por favor, tire -o se precisar.