Regex brasileiros · Biblioteca de padrões

Regex de CNPJ (numérico e alfanumérico)

Regex de CNPJ que aceita o formato numérico atual e o alfanumérico, com ou sem pontuação. Só o formato: os dígitos verificadores precisam de cálculo à parte.

O padrão

[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-\d{2}|[0-9A-Z]{12}\d{2}

Flags: nenhuma. Sem âncoras: para validar um campo inteiro use ^(?:padrão)$.

Só o formato. Este regex confere a aparência do texto. Ele não prova que o dado existe nem que os dígitos verificadores estão certos. Para isso use Validador de CPF e CNPJ.

Teste na hora

Tudo roda no seu navegador; nada do que você digita é enviado.

Exemplos

Casam

  • 11.222.333/0001-81
  • 11222333000181
  • 12.ABC.345/01DE-35
  • 1234567800NA84

Não casam

  • 11.222.333/0001-8
  • 12.abc.345/01de-35
  • 11222333000181X
  • 11.222.333-0001/81
  • 12.ABC.345/01DE-AB
Os números de exemplo são fictícios: foram gerados por cálculo dos dígitos verificadores, sem consulta a nenhum cadastro, e servem só para testar o formato.

Como funciona, por partes

Armadilhas

Código pronto

JavaScript

const re = new RegExp("^(?:[0-9A-Z]{2}\\.[0-9A-Z]{3}\\.[0-9A-Z]{3}/[0-9A-Z]{4}-\\d{2}|[0-9A-Z]{12}\\d{2})$");
console.log(re.test(texto.trim()));

Python

import re

re_cnpj = re.compile(r"[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}|[0-9A-Z]{12}[0-9]{2}")
print(bool(re_cnpj.fullmatch(texto.strip())))

C#

using System.Text.RegularExpressions;

var re = new Regex(@"^(?:[0-9A-Z]{2}\.[0-9A-Z]{3}\.[0-9A-Z]{3}/[0-9A-Z]{4}-[0-9]{2}|[0-9A-Z]{12}[0-9]{2})\z");
bool ok = re.IsMatch(texto.Trim());

Perguntas frequentes

O que muda no CNPJ alfanumérico?

O número continua com 14 caracteres, mas as doze primeiras posições podem ter letras maiúsculas além de dígitos. Os dois últimos continuam sendo dígitos verificadores. Os CNPJs já existentes não mudam.

Posso usar só \d{14} em sistemas novos?

Não, se quiser aceitar empresas com o novo formato. O \d{14} recusaria qualquer CNPJ com letra. Use um conjunto que inclua A a Z nas doze primeiras posições, como neste padrão.

Os CNPJs dos exemplos existem?

Foram gerados por cálculo dos dígitos verificadores a partir de sequências arbitrárias, sem consulta ao cadastro. Servem apenas como teste de formato e podem, por coincidência, pertencer a alguém. Não os use em cadastros.

Ferramentas

← Ver todos os padrões