-
Notifications
You must be signed in to change notification settings - Fork 0
/
validaCPF.js
64 lines (56 loc) · 1.49 KB
/
validaCPF.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function verificaCPFInvalidos(cpf){
const cpfsInvalidos = [
"11111111111",
"22222222222",
"33333333333",
"44444444444",
"55555555555",
"66666666666",
"77777777777",
"88888888888",
"99999999999",
"00000000000"
]
return cpfsInvalidos.indexOf(cpf) === -1
}
function somaNumerosCPF(cpf, totalDeDigitos, peso){
let soma = 0
for(let indice = 1; indice <= totalDeDigitos; indice++){
soma += parseInt(cpf.substring(indice - 1, indice)) * ( peso - indice)
}
return soma
}
function verificaDigito(cpf, totalDeDigitos, peso, digitoDeVerificacao){
const soma = somaNumerosCPF(cpf, totalDeDigitos, peso)
const resto = (soma * 10) % 11
return resto === digitoDeVerificacao
}
function verificaPrimeiroDigito(cpf){
const peso = 11
const totalDeDigitosPrimeiraParte = 9
const digitoDeVerificacao = parseInt(cpf.substring(9, 10))
return verificaDigito(
cpf,
totalDeDigitosPrimeiraParte,
peso,
digitoDeVerificacao
)
}
function verificaSegundoDigito(cpf){
const peso = 12
const totalDeDigitosSegundaParte = 10
const digitoDeVerificacao = parseInt(cpf.substring(10, 11))
return verificaDigito(
cpf,
totalDeDigitosSegundaParte,
peso,
digitoDeVerificacao
)
}
function validaCPF(cpf){
return(
verificaPrimeiroDigito(cpf)&&
verificaSegundoDigito(cpf)&&
verificaCPFInvalidos(cpf)
)
}