O erro ocorre quando o CEP inclui letras e símbolos, e é menor ou maior que 8.
Eu encontrei um código (/^[a-zA-Z0-9]+$/.test(str)
) que retorna true
se uma string é alfanumérica. Alterei ele para retornar true
caso a string seja composta apenas por números e apliquei no código abaixo:
const CEP = '01001000';
try {
if(/^[0-9]+$/.test(CEP) && CEP.length === 8){
buscaCEP();
} else {
throw Error('CEP inválido');
}
} catch(e) {
console.log(e);
}
function buscaCEP() {
const consultaCEP = fetch(`https://viacep.com.br/ws/${CEP}/json/`)
.then(resposta => resposta.json())
.then(r => {
if(r.erro) {
throw Error('Esse CEP não existe.');
} else {
console.log(r);
}
})
.catch(erro => console.log(erro));
console.log(consultaCEP);
}
Gostaria de saber da validade do código.