{
  "slug": "cpf",
  "nome": "CPF",
  "padrao": "\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}|\\d{11}",
  "flags": "",
  "padraoAncorado": "^(?:\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}|\\d{11})$",
  "descricao": "Regex para validar o formato de CPF com ou sem pontuação (000.000.000-00 ou 11 dígitos). Confere só a forma; os dígitos verificadores exigem cálculo.",
  "urlPagina": "https://meajudaflow.com.br/regex/cpf/",
  "urlJson": "https://meajudaflow.com.br/api/v1/regex/cpf.json",
  "comoFunciona": [
    {
      "parte": "\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}",
      "texto": "Primeira alternativa: o CPF formatado. Três dígitos, ponto, três dígitos, ponto, três dígitos, hífen e dois dígitos finais. O ponto aparece escapado porque o ponto solto, em regex, significa qualquer caractere."
    },
    {
      "parte": "|",
      "texto": "A barra vertical separa as duas formas aceitas. Ela tem a menor prioridade do padrão, por isso, ao embutir o regex em outro maior, ele precisa ficar dentro de um grupo."
    },
    {
      "parte": "\\d{11}",
      "texto": "Segunda alternativa: onze dígitos seguidos, sem pontuação, que é como o número costuma ser guardado em bancos de dados e planilhas."
    },
    {
      "parte": "Por que duas alternativas",
      "texto": "Aceitar só o formato completo ou só o numérico evita misturas como 123.456.78910, que um padrão com pontos e hífen opcionais deixaria passar. Aqui o texto é todo formatado ou todo numérico."
    },
    {
      "parte": "Ancoragem",
      "texto": "Para conferir um campo inteiro, o padrão precisa estar entre ^ e $ (o mini-testador desta página faz isso quando a caixa de texto inteiro está marcada). Sem âncoras, o regex também encontra um CPF no meio de uma frase."
    }
  ],
  "exemplosQueCasam": [
    "111.444.777-35",
    "11144477735",
    "529.982.247-25",
    "39053344705"
  ],
  "exemplosQueNaoCasam": [
    "123.456.789-0",
    "123.456.78910",
    "1234567890",
    "abc.def.ghi-jk",
    "111.444.777-355"
  ],
  "armadilhas": [
    "O regex só confere o formato. Ele aceita 000.000.000-00 e qualquer sequência de onze dígitos, mesmo que os dois últimos não batam com o cálculo. Para saber se o CPF é matematicamente válido, use a ferramenta de validação com dígitos verificadores.",
    "Número com formato correto e dígitos corretos ainda pode não pertencer a ninguém. Só a Receita Federal sabe se o CPF existe e qual é a situação dele; nenhum regex nem cálculo responde isso.",
    "Em campos de formulário, as pessoas colam o CPF com espaços sobrando no começo ou no fim. Aplique trim antes de testar, ou o padrão ancorado recusará um número perfeitamente bom.",
    "No Python e no C#, o atalho \\d aceita dígitos de outros alfabetos por padrão. Use [0-9] nesses ambientes, como nos trechos de código desta página, para ficar igual ao JavaScript."
  ],
  "faq": [
    {
      "pergunta": "Esse regex valida CPF?",
      "resposta": "Valida apenas a aparência: quantidade de dígitos e pontuação. A validação de verdade calcula os dois dígitos finais a partir dos nove primeiros e compara. Faça as duas etapas: regex para recusar lixo rápido, cálculo para recusar número inventado."
    },
    {
      "pergunta": "Devo aceitar o CPF só com números ou só formatado?",
      "resposta": "Aceite os dois na entrada, porque as pessoas digitam de qualquer jeito, e guarde sempre só os onze dígitos. Formate apenas na hora de mostrar. Assim buscas e comparações não dependem da pontuação."
    },
    {
      "pergunta": "Os exemplos desta página são CPFs de pessoas reais?",
      "resposta": "Não. Foram gerados pelo cálculo dos dígitos verificadores a partir de sequências escolhidas, sem consulta a qualquer cadastro. Têm dígitos corretos para servir de teste, mas não foram tirados de ninguém. Não use em cadastros reais."
    }
  ],
  "codigos": {
    "js": "const re = new RegExp(\"^(?:\\\\d{3}\\\\.\\\\d{3}\\\\.\\\\d{3}-\\\\d{2}|\\\\d{11})$\");\nconsole.log(re.test(texto.trim()));",
    "python": "import re\n\nre_cpf = re.compile(r\"[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}-[0-9]{2}|[0-9]{11}\")\nprint(bool(re_cpf.fullmatch(texto.strip())))",
    "csharp": "using System.Text.RegularExpressions;\n\nvar re = new Regex(@\"^(?:[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}-[0-9]{2}|[0-9]{11})\\z\");\nbool ok = re.IsMatch(texto.Trim());"
  },
  "ferramentaRelacionada": {
    "slug": "cpf-cnpj",
    "nome": "Validador e gerador de CPF e CNPJ",
    "url": "https://meajudaflow.com.br/tools/cpf-cnpj"
  },
  "aviso": "O regex confere só o formato. A validação de verdade (dígitos verificadores, existência) exige cálculo ou consulta.",
  "tipoFonte": "norma",
  "fontes": [
    {
      "titulo": "Receita Federal: folheto sobre o CPF e o CNPJ (CPF com onze dígitos; 9º dígito indica a Região Fiscal)",
      "url": "https://www.gov.br/receitafederal/pt-br/assuntos/educacao-fiscal/educacao_fiscal/folhetos-orientativos/cadastros-dig.pdf"
    },
    {
      "titulo": "Banco Central: Manual Operacional do DICT, chaves Pix (CPF: 11 números, sem pontos nem traços)",
      "url": "https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/X_ManualOperacionaldoDICT.pdf"
    }
  ],
  "notasDasFontes": [
    "O cálculo dos dois dígitos verificadores (módulo 11) é prática consolidada, mas não encontramos um documento oficial aberto que o descreva; por isso o regex só confere a forma."
  ],
  "fonte": "Me Ajuda Flow (meajudaflow.com.br)",
  "atualizadoEm": "2026-11-07"
}
