Automotivo

Placas Mercosul vs. Padrão Antigo: O que Muda na Validação?

Entenda as diferenças de formato entre o antigo padrão de placas de veículos e o novo padrão Mercosul, e saiba como validá-los e convertê-los usando Regex.

15 de junho de 20265 min de leituraDevThru

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
0A
1B
2C
3D
4E
5F
6G
7H
8I
9J

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.

placa de veículoMercosulvalidaçãoregexautomotivoJavaScript