Oi Luiz, tudo bem? 😊
Sua abordagem para validar nomes na lista de amigos está no caminho certo!
Você utilizou corretamente expressões regulares para garantir que apenas letras e espaços sejam aceitos. 👍
No entanto, percebi um pequeno detalhe na função validarCaracteres()
.
Você pode simplificar a lógica, removendo a condição if (regex.test(...)) { }
vazia.
O else
já cobre o caso em que o nome é inválido, removendo-o da lista e exibindo o alerta.
Além disso, para deixar o código mais limpo, sugiro atribuir o valor do campo nome-amigo
a uma variável dentro da função validarCaracteres()
, assim como você fez na função adicionar()
.
Veja como ficaria o código ajustado:
//Lista amigos
let array_amigos = [];
function adicionar() {
//Atribuição de valor da Entrada a uma variavel
let amigos = document.getElementById('nome-amigo').value;
//Verifica se o campo está vazio
if (amigos === "") {
alert("O campo está vazio!")
return
}
//Valida se o nome não possui caracteres especiais ou numeros
if (validarCaracteres(amigos)) {
//Atualiza a lista através da entrada no HTML
array_amigos.push(amigos);
//Imprime o nome dos participantes na página do sorteio
document.getElementById("lista-amigos").textContent = array_amigos.join(", ");
}
//Limpa a entrada
document.getElementById('nome-amigo').value = "";
}
function validarCaracteres(nome) {
// Expressão regular para aceitar apenas letras (maiúsculas e minúsculas) e espaços
const regex = /^[a-zA-Z ]+$/;
if (!regex.test(nome)) {
array_amigos.pop(); //Remove item incorreto da lista, caso exista
alert("Nome não pode conter número ou caracteres especiais");
return false;
}
return true;
}
🎓 Para saber mais: