Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

estou com problemas para formatar o cpf recebido

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);
}
1 resposta
solução!

Entendi meu erro, o replace não é exatamente um pattern mas ele usa a regex para selecionar oq vc deseja alterar. Eu estava usando uma regex para selecionar os numeros e assim substitui-los para o vazio, porem não era esse meu objetivo e sim pegar tudo diferente de um numero.

const cpfFormatado = cpfRecebido.replace(/(?:\D+)/g, '');
//Minha alteração está em usar o d maiúsculo ao inves do minúsculo