Placa do veiculo padrão Mercosul ? Resolvido

Boa noite galera, estou trabalhando em um projeto e não sei como fazer, como no enunciado preciso validar placa, eu tenho um metodo para validar as placas antigas dos veiculos segue…

public boolean validaPlaca(String placa) {
	boolean result = false;

	Pattern pattern = Pattern.compile("[A-Z]{3}-\\d{4}");
	Matcher mat = pattern.matcher(placa);
	if (!mat.matches()) {
		result = false;
	} else {
		result = true;

	}
	return result;

}

Agora para validar a placa padrão Mercosul não sei como fazer, ja fiz Pattern pattern = Pattern.compile("[A-Z]{3}\d{1}[A-Z]{3}\d{2}"); e tambm Pattern pattern = Pattern.compile("[A-Z]{3}[0-9][A-Z][0-9]{2}");

nenhuma funcionou, lembrando que o padrão Mercosul e AAA3B11, 3 primeiros dígitos são letras, o quarto e um numero, o quinto uma letra e o sexto e sétimo um numero, espero que me ajudem…

Parece que tá certo, cara:
http://regexstorm.net/tester?p=[A-Z]{3}[0-9][A-Z][0-9]{2}&i=AAA3B11

Consegui resolver, fiz as duas validações da placa modelo anterior e da nova. vlw pessoal…

public boolean validaPlaca(String placa) 
{
	boolean result = false;
	Pattern pattern = Pattern.compile("[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}|[A-Z]{3}\\-[0-9]{4}");
	Matcher mat = pattern.matcher(placa);
	if (!mat.matches()) {
		result = false;
	} else {
		result = true;

	}
	return result;
}
2 curtidas

Para que complicar, se pode descomplicar:

public boolean validaPlaca(String placa) 
{
	Pattern pattern = Pattern
            .compile("[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}|[A-Z]{3}\\-[0-9]{4}");
	Matcher mat = pattern.matcher(placa);
	return mat.matches();
}

Porque se o método já te retorna boolean não há necessidades de criar uma variável a mais e um if (que é uma estrutura de decisão) sem necessidades.

Olha como ficou enxuto e lógico.

3 curtidas

Boa observação!

1 curtida