Por algum motivo o replace não esta formatando. Ja revisei na mdn porem não consegui chegar a uma conclusão. Eis o meu codigo de validação:
const validaCpf = (input) => {
let mensagem = '';
const cpfRecebido = input.value;
const cpfFormatado = cpfRecebido.replace(/(?=\d)/gi, '')
let soma = 0;
if(cpfFormatado == ('' || undefined)) {return mensagem;}
for(let i=1; i<=9; i++){
soma = soma + parseInt(cpfFormatado.substring(i-1, i)) * (11 - i);
}
let resto = ((soma * 10) % 11);
if(resto == (10 || 11)) {resto = 0;}
if(resto != parseInt(cpfFormatado.substring(9, 10))) {
mensagem = 'O CPF digitado não é valido.';
}
soma = 0;
for(let i=1; i<=10; i++){
soma = soma + parseInt(cpfFormatado.substring(i-1, i)) * (12 - i);
}
resto = ((soma * 10) % 11);
if(resto == (10 || 11)) {resto = 0;}
if(resto != parseInt(cpfFormatado.substring(10, 11))) {
mensagem = 'O CPF digitado não é valido.';
}
input.setCustomValidity(mensagem);
}