O Gerador De CPF O Gerador De CPF

Regex para CPF — Expressão Regular com e sem Máscara

Expressões regulares para capturar CPF em texto, validar formato em formulários e extrair números de documentos. A regex verifica apenas o formato — ela não calcula os dígitos verificadores.

Regex para CPF formatado

Captura CPF no padrão XXX.XXX.XXX-XX:

^\d{3}\.\d{3}\.\d{3}-\d{2}$
  • \d{3} — exatamente 3 dígitos
  • \. — ponto literal
  • - — traço literal
  • ^ e $ — ancoram no início e fim da string

Regex para CPF sem máscara

Captura CPF como 11 dígitos consecutivos:

^\d{11}$

Regex para ambos os formatos

Aceita CPF com ou sem pontuação:

^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$

O ? torna pontos e traço opcionais. Aceita 529.982.247-25, 52998224725 e formatos parciais como 529982247-25.

Regex para capturar CPF em texto

Para encontrar CPFs dentro de um texto maior (sem âncoras):

\b\d{3}\.\d{3}\.\d{3}-\d{2}\b

\b delimita a fronteira da palavra, evitando capturar partes de números maiores.

Regex com grupos de captura

Para extrair cada bloco separadamente:

^(\d{3})\.(\d{3})\.(\d{3})-(\d{2})$

Grupos: $1 = primeiro bloco, $2 = segundo, $3 = terceiro, $4 = dígitos verificadores.

Exemplos por linguagem

JavaScript

const regex = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;
regex.test("529.982.247-25"); // true
regex.test("52998224725");    // false

// Aceitar ambos os formatos
const flexivel = /^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/;
flexivel.test("529.982.247-25"); // true
flexivel.test("52998224725");    // true

Python

import re

padrao = r'^\d{3}\.\d{3}\.\d{3}-\d{2}$'
bool(re.match(padrao, "529.982.247-25"))  # True
bool(re.match(padrao, "52998224725"))      # False

# Capturar CPFs em texto
texto = "CPFs: 529.982.247-25 e 123.456.789-09"
cpfs = re.findall(r'\d{3}\.\d{3}\.\d{3}-\d{2}', texto)
# ['529.982.247-25', '123.456.789-09']

PHP

$regex = '/^\d{3}\.\d{3}\.\d{3}-\d{2}$/';
preg_match($regex, '529.982.247-25'); // 1 (true)
preg_match($regex, '52998224725');    // 0 (false)

// Capturar CPFs em texto
preg_match_all('/\d{3}\.\d{3}\.\d{3}-\d{2}/', $texto, $matches);

Go

import "regexp"

var cpfRegex = regexp.MustCompile(`^\d{3}\.\d{3}\.\d{3}-\d{2}$`)
cpfRegex.MatchString("529.982.247-25") // true
cpfRegex.MatchString("52998224725")    // false

Tabela resumo

PadrãoRegexExemplo
Formatado^\d{3}\.\d{3}\.\d{3}-\d{2}$529.982.247-25
Só dígitos^\d{11}$52998224725
Ambos^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$ambos
Em texto\b\d{3}\.\d{3}\.\d{3}-\d{2}\bbusca em texto
Com grupos^(\d{3})\.(\d{3})\.(\d{3})-(\d{2})$extrai blocos

Importante: regex valida apenas o formato, não os dígitos verificadores. Para validação completa, use uma função que implemente o algoritmo de módulo 11 — veja exemplos em 9 linguagens.