用于 Java 脚本的 CPF 验证代码
下面的代码来自一个经过优化的 Javascript 函数,具有最少的 圈复杂度 我根据文章中的解释得到的行 巴西公积金验证方法 - 个人注册. 在第二个数字化测试仪的计算时略有变化. 而不是从第二个数字开始, 代码从第一个开始并使用值 11 作为乘数. 另一个明显的变化是,为了避免比较知道我们是否在第九位和十进制数字, 我将值零分配给最后一个元素 (指数 10) 减少一个比较.
使用的算法是 1 在文章中进行了解释,并且有一个小技巧可以避免与其他等于 10 这是制作模块 10 其余的.
// Codigo que valida um CPF informado quanto a validade de seus dígitos verificadores.
const validarCpf = (cpf) => {
if (cpf.length !== 11) { // Supõe-se já vir filtrado o valor
return false;
}
let elementos = cpf.split(''); // convertendo a string em array
elementos[10] = 0; // Forçando ao valor da ultima multiplicacao ser zero
let somaA = 0;
let somaB = 0;
elementos.reduce(function(i, valor, indice) {
let multiplicador = 11 - indice;
somaB += (valor * multiplicador);
somaA += (valor * (multiplicador > 2 ? multiplicador - 1 : 0));
}, somaA);
let moduloA = ((somaA * 10) % 11) % 10;
let moduloB = ((somaB * 10) % 11) % 10;
return cpf.replace(/\d{9}(\d{2})$/g, '$1') == ("" + moduloA + moduloB);
}
您可以测试此代码 这里.
一个回应
[…;] Javascript版本. […;]