DEV Community

Leandro Gazoli
Leandro Gazoli

Posted on

Adeus Regex de CNPJ: Valide o Novo Formato Alfanumérico no NestJS e TS ⚡

A Mudança que ninguém avisou (ou quase ninguém)

A Receita Federal e o SERPRO atualizaram o formato do CNPJ. Agora, além de números, teremos letras (alfanumérico). Se o seu sistema usa aquela Regex antiga de 2010, ele vai quebrar.

Para resolver isso de forma elegante e tipada, criei a cnpj-universal. Uma biblioteca ultra-leve (~2KB) que lida com a transição do formato legado para o novo sem dor de cabeça.

O que ela faz?

  • Validação Dual: Aceita o formato antigo (11.222.333/0001-81) e o novo (12.ABC.345/01DE-35).
  • NestJS Ready: Já vem com decorator @IsCNPJ() para seus DTOs.
  • Zero Dependências: Performance pura e sem inchar seu projeto.
  • Type-Safe: Escrita para TypeScript 5.x. ou superior.

Como implementar no NestJS (class-validator)

Esqueça as validações manuais no controller. Com a cnpj-universal, você usa como um decorator nativo:

import { IsCNPJ } from "cnpj-universal";

export class EmpresaDto {
  @IsCNPJ({ message: "CNPJ inválido (numérico ou alfanumérico)" })
  cnpj: string;
}
Enter fullscreen mode Exit fullscreen mode

Uso em Vanilla JS/TS

Se você não usa NestJS, a classe utilitária resolve tudo:

import { CNPJ } from "cnpj-universal";

CNPJ.isValid("12.ABC.345/01DE-35"); // ✅ true
CNPJ.formatar("12ABC34501DE35");    // '12.ABC.345/01DE-35'
Enter fullscreen mode Exit fullscreen mode

Conclusão

A transição para o CNPJ alfanumérico é gradual, mas obrigatória. Não espere o erro chegar no seu log de produção.

Explore o projeto, abra issues e contribua:
📦 NPM: cnpj-universal
GitHub: LeandroGazoli/cnpj-universal

GitHub logo LeandroGazoli / cnpj-universal

Validação de CNPJ numérico (legado) e alfanumérico (novo formato SERPRO) para NestJS e class-validator.

CNPJ Universal ⚡

npm version npm downloads License: MIT TypeScript NestJS

Validador Type-Safe para CNPJ Numérico (Legado) e Alfanumérico (Novo Formato SERPRO).

Compatível com NestJS, class-validator e TypeScript/JavaScript puro, com suporte completo para ambos os formatos de CNPJ brasileiros.


📋 Índice


✨ Características

Validação Dual: Suporta CNPJ numérico (legado) e alfanumérico (novo formato SERPRO)
Sem Dependências Externas: Apenas class-validator como peer dependency
Type-Safe: Totalmente tipado em TypeScript
NestJS Ready: Funciona como decorator em DTOs
Flexível: Com ou sem máscara (XX.XXX.XXX/XXXX-XX)
Batch Operations: Métodos utilitários para cálculo de dígitos verificadores
Leve: ~2KB minificado
Zero Breaking Changes: API estável desde v1.0.0


🚀 Instalação

npm install cnpj-universal
Enter fullscreen mode Exit fullscreen mode

Com yarn:

yarn add cnpj-universal
Enter fullscreen mode Exit fullscreen mode

Com pnpm:

pnpm
Enter fullscreen mode Exit fullscreen mode

Top comments (0)