Se você desenvolve sistemas que envolvem gestão de frotas, logística, estacionamentos ou qualquer tipo de cadastro de veículos no Brasil, já se deparou com a necessidade de salvar e validar placas de carros e motos.
Desde a adoção definitiva do padrão de Placas Mercosul, a validação de placas deixou de ser um simples formato de 3 letras e 4 números. Hoje em dia, os sistemas precisam lidar tanto com placas antigas (que ainda circulam em milhões de veículos) quanto com o novo padrão alfanumérico.
Neste artigo, veremos as diferenças entre os padrões, como fazer a validação ideal usando expressões regulares (Regex) e como converter placas antigas para o padrão Mercosul.
Diferenças de Estrutura entre os Padrões
A transição do padrão antigo (conhecido como placa cinza) para o Mercosul foi necessária para aumentar a quantidade de combinações disponíveis e padronizar a identificação veicular entre os países do bloco.
- Padrão Antigo (Cinza): Possui formato fixo
LLL-NNNN(3 letras, um hífen opcional, e 4 números). Exemplo:ABC-1234. - Padrão Mercosul: Possui formato alfanumérico intercalado
LLLNLNN(3 letras, 1 número, 1 letra, e 2 números). Exemplo:ABC1D23.
Com essa mudança, o segundo dígito numérico da placa antiga foi substituído por uma letra. Mas essa substituição não é aleatória; ela segue uma tabela oficial de conversão.
Tabela de Conversão de Números para Letras
Se um veículo do padrão antigo é transferido de proprietário ou município, ele recebe a placa Mercosul correspondente, onde o segundo número é substituído pela letra equivalente da tabela abaixo:
| Dígito Numérico Antigo | Letra Equivalente Mercosul |
|---|---|
| 0 | A |
| 1 | B |
| 2 | C |
| 3 | D |
| 4 | E |
| 5 | F |
| 6 | G |
| 7 | H |
| 8 | I |
| 9 | J |
Dessa forma, a placa antiga ABC-1234 se torna ABC1C34 no padrão Mercosul (o número 2 foi substituído pela letra C).
Validando Placas com Expressões Regulares (Regex)
Para garantir que o usuário insira uma placa em formato válido em seus formulários, podemos utilizar Regex no frontend ou backend. Dependendo da necessidade do seu sistema, existem diferentes padrões:
1. Validar Apenas Placa Antiga
// Aceita formatos como ABC1234 ou ABC-1234
const regexAntiga = /^[A-Z]{3}-?[0-9]{4}$/i;
2. Validar Apenas Placa Mercosul
// Aceita formatos como ABC1D23 ou ABC1d23 (Mercosul padrão Brasil)
const regexMercosul = /^[A-Z]{3}[0-9][A-Z][0-9]{2}$/i;
3. Validação Unificada (Ambos os Padrões)
A melhor abordagem na maioria dos cadastros é aceitar qualquer um dos dois padrões. Podemos unir as duas expressões usando o operador lógico de alternativa (|):
const regexPlacaUnificada = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/i;
Note que o caractere [A-Z0-9] na quinta posição permite tanto um número (padrão antigo) quanto uma letra (padrão Mercosul). Se você também aceitar hífens na placa antiga, a regex fica ligeiramente diferente:
const regexComHifen = /^([A-Z]{3}-[0-9]{4})|([A-Z]{3}[0-9][A-Z][0-9]{2})$/i;
Implementação de uma Função de Validação em JavaScript
Uma função de validação robusta deve remover caracteres indesejados (deixando apenas letras, números e hífens se aplicável), converter o texto para letras maiúsculas e testar contra as expressões regulares:
function validarPlacaVeiculo(placa) {
// Remove espaços extras e converte para maiúsculo
const cleanPlaca = String(placa).trim().toUpperCase();
// Regex unificada (permite placa cinza sem hífen e placa Mercosul)
const regexSemHifen = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/;
// Regex específica para placa antiga com hífen (ex: ABC-1234)
const regexComHifen = /^[A-Z]{3}-[0-9]{4}$/;
return regexSemHifen.test(cleanPlaca) || regexComHifen.test(cleanPlaca);
}
// Exemplos de uso
console.log(validarPlacaVeiculo('ABC-1234')); // true (antigo com hífen)
console.log(validarPlacaVeiculo('ABC1234')); // true (antigo sem hífen)
console.log(validarPlacaVeiculo('ABC1D23')); // true (Mercosul)
console.log(validarPlacaVeiculo('AB12C34')); // false (formato inválido)
Seja qual for o fluxo de transporte ou veículo que você estiver integrando, garantir a validação de placas evita problemas graves de processamento de dados e fraudes na identificação veicular.
Para gerar ou validar placas fictícias para seus testes integrados, acesse a nossa ferramenta de Gerador de Placa.
🛠️ Experimente na prática
Use nossas ferramentas online gratuitas — sem cadastro, direto no navegador.
