Validando placas de veiculos com JavaScript
Validando placas de carros ou motos nos formatos atual ou novo com JS
Vamos aprender como validar placas de veículos com JavaScript. Mas antes, vamos entender os formatos existentes.
Desde 1990 o formato das placas de veículos no Brasil segue o padrão de 3 letras e quatro números. A partir de 2016 passou a ser implantado um padrão de placa comum aos países que fazer parte do Mercosul, este novo formato mantem o mesmo tamanho do padrão atual (7 caracteres), mas, com algumas diferenças, as 3 letras iniciais continuam, mas a parte reservada aos números sofre a substituição de uma dos números por uma letra.
Portanto, o novo padrão tem 4 letras e 3 números. Deste 2019, todos os veículos novos passam a utilizar este formato de placa.
Para validar os diferentes formatos de placa, vamos utilizar expressões regulares. Vamos começar com o formato atual. Uma expressão regular para validar este formato ficaria assim:
var placa = "ABC1234";
const regexPlaca = /^[a-zA-Z]{3}[0-9]{4}$/;
if(regexPlaca.test(placa)){
console.log("Placa válida");
} else {
console.log("Placa inválida");
}
Vamos entender melhor esta expressão regular.Ela se digite em duas partes:
/^[a-zA-Z]{3}
Significa que ela deve começar com 3 caracteres, e estes caracteres podem ser todas as letras minúsculas (a-z) ou maiúsculas (A-Z). O "[]" serve para informar o que deve ser aceito, e o "{}" se refere a quantidade de caracteres que são esperados.
[0-9]{4}$
Significa que ela deve ter terminar com quatro números.
Com base nisso, podemos montar os outros formatos de placa. O padrão Mercosul tem pequenas variações relacionadas ao tipo de veículo. Para um carro, o formato é AAA-1A11 (3 letras, 1 número, 1 letra e 2 números). Para motocicletas, o padrão é AAA-11A1 (3 letras, 2 números, 1 letra e 1 número)
Para validar os 3 formatos ao mesmo tempo, vamos criar uma função. O código complete segue abaixo:
function validarPlaca(placa){
var resposta = "placa inválida";
const regexPlaca = /^[a-zA-Z]{3}[0-9]{4}$/;
const regexPlacaMercosulCarro = /^[a-zA-Z]{3}[0-9]{1}[a-zA-Z]{1}[0-9]{2}$/;
const regexPlacaMercosulMoto = /^[a-zA-Z]{3}[0-9]{2}[a-zA-Z]{1}[0-9]{1}$/;
if(regexPlaca.test(placa)){
resposta = "Placa válida no formato atual";
}
if(regexPlacaMercosulCarro.test(placa)){
resposta = "Placa válida (padrão Mercosul - carro)";
}
if(regexPlacaMercosulMoto.test(placa)){
resposta = "Placa válida (padrão Mercosul - moto)";
}
return resposta;
}
console.log(validarPlaca("ABC1234"));
console.log(validarPlaca("ABC12356"));
console.log(validarPlaca("ABC12D5"));
console.log(validarPlaca("ABC1D15"));
console.log(validarPlaca("ABC12D51"));