Integração com Joi
Valide CPF e CNPJ alfanumérico com Joi em Node.js.
Use o validador de CPF e CNPJ da validation-br — isCPF e isCNPJ — em uma regra .custom() do Joi, o validador de esquemas usado em aplicações Node, React, Vue e outras. Veja como implementar essa validação em JavaScript e TypeScript: a mesma abordagem serve tanto para CPF quanto para CNPJ — incluindo o formato alfanumérico —, dentro do mesmo schema Joi usado para validar o restante da requisição, sem código adicional fora dele.
Como validar CPF e CNPJ alfanumérico com Joi
import Joi from 'joi';
import { isCPF } from 'validation-br';
const validateCpf = (value, helper) => {
if (!isCPF(value)) {
return helper.message('CPF inválido');
}
return value;
};
const schema = Joi.object({
cpf: Joi.string().custom(validateCpf),
});
schema.validate({ cpf: '01234567890' });A mesma função de .custom() pode ser criada para CNPJ. isCNPJ já valida CNPJ alfanumérico (novo formato, a partir de 2026) além do formato numérico, sem exigir configuração adicional:
import Joi from 'joi';
import { isCNPJ } from 'validation-br';
const validateCnpj = (value, helper) => {
if (!isCNPJ(value)) {
return helper.message('CNPJ inválido');
}
return value;
};
const schema = Joi.object({
cnpj: Joi.string().custom(validateCnpj),
});
schema.validate({ cnpj: '12ABC34501DE35' });Bibliotecas de validação de terceiros só precisam de um predicado booleano — por isso o exemplo usa
isCPFem vez denew CPF(). A API de classes é útil quando você quer o valor normalizado ou uma exceção detalhada, mas para plugar em outra lib de validaçãoisXjá é a integração completa, e funciona igual na 1.x e na 2.0.

