Launching a SaaS?·Collect waitlist signups before you build — before.run
SandboxPatternsDetectDocsChangelog
Identity
pt-BR
#cpf
#brazil
#brazilian
#identity

Brazilian CPF

Matches a Brazilian CPF (Cadastro de Pessoas Físicas) number in formatted (NNN.NNN.NNN-NN) or unformatted (NNNNNNNNNNN) form.

Brazilian government formsE-commerce checkoutKYC verification
/
/
Safe
Test String
3 matches
\d{3}digit\d — digit (0–9) — repeated exactly 3 times · {3} — exactly 3 times
\.?\.\. — escaped character '.' — repeated zero or one time (optional) · ? — zero or one time (optional)
\d{3}digit\d — digit (0–9) — repeated exactly 3 times · {3} — exactly 3 times
\.?\.\. — escaped character '.' — repeated zero or one time (optional) · ? — zero or one time (optional)
\d{3}digit\d — digit (0–9) — repeated exactly 3 times · {3} — exactly 3 times
-?-'-' — literal character — repeated zero or one time (optional) · ? — zero or one time (optional)
\d{2}digit\d — digit (0–9) — repeated exactly 2 times · {2} — exactly 2 times
Pattern: 28 charsInput: 41 chars
100% client-side · private

Valid Examples

  • 123.456.789-09
  • 12345678909
  • 111.444.777-35

Invalid Examples

  • 123.456.789
  • 1234567890
  • abc.456.789-09

Usage & Integration

Validate Brazilian CPF natively in your backend or frontend without copying regex strings.

Node / Edge

import { validate } from '@regexto/validators';

validate('br-cpf', '...');

Python

from regexto_validators import validate

validate("br-cpf", "...")

Go

import "github.com/regex-to/validators-go"

valid, err := validators.Validate("br-cpf", "...")

PHP

use RegexTo\Validators\Validator;

Validator::validate('br-cpf', '...');

Rust

use regexto_validators::validate;

let is_valid = validate("br-cpf", "...").unwrap();