Qual é o melhor jeito de validar o que o usuário digita por exemplo, impedir letras quando o esperado são números?
Qual é o melhor jeito de validar o que o usuário digita por exemplo, impedir letras quando o esperado são números?
Oii, Pedro!
Ótima dúvida, essa é uma das partes mais importantes da programação: validar a entrada de dados para evitar erros e comportamentos inesperados.
Vamos ver algumas formas:
isNaN() para verificar se o valor é um númeroSe você pedir um número e quiser ter certeza de que o usuário não digitou letras, pode usar isNaN() (“is Not a Number”).
let numero = prompt("Digite um número:");
if (isNaN(numero)) {
console.log("Valor inválido! Você deve digitar apenas números.");
} else {
console.log("Número válido:", numero);
}
Como funciona:
isNaN() retorna true se o valor não for um número.Você pode combinar while com validação para impedir o avanço do programa enquanto o dado for inválido:
let numero;
do {
numero = prompt("Digite um número:");
} while (isNaN(numero) || numero === "");
console.log("Número válido:", numero);
Explicação:
O laço do...while continua repetindo até o usuário digitar um número válido (ou seja, até isNaN(numero) ser false).
Expressões regulares são muito úteis para validar formatos específicos, como números, e-mails ou CEPs.
Exemplo para permitir apenas números:
let entrada = prompt("Digite um número:");
if (!/^[0-9]+$/.test(entrada)) {
console.log("Digite apenas números!");
} else {
console.log("Entrada válida:", entrada);
}
Como funciona:
/^[0-9]+$/ significa “somente dígitos de 0 a 9”..test() retorna true se a string corresponder à regra.Se estiver trabalhando com HTML, você pode restringir o tipo de entrada diretamente no campo:
<input type="number" id="idade" placeholder="Digite sua idade">
E ainda validar com JavaScript:
const idade = document.getElementById("idade");
idade.addEventListener("input", function() {
if (idade.value < 0) {
alert("A idade não pode ser negativa!");
idade.value = "";
}
});
Espero ter ajudado.