1
resposta

Validando se é um nome sem caracteres especiais ,números e permitindo nomes com espaço

//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
    }
    //Atualiza a lista através da entrada no HTML
    array_amigos.push(amigos);
    //Valida se o nome não possui caracteres especiais ou numeros
    validarCaracteres();
    //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() {
    // Expressão regular para aceitar apenas letras (maiúsculas e minúsculas)
    const regex = /^[a-zA-Z ]+$/;
    if (regex.test(document.getElementById('nome-amigo').value)) {
        
    } else {
        array_amigos.pop(); //Remove item incorreto da lista
        console.log(array_amigos);
        alert("Nome não pode conter número ou caracteres especiais")
    }
}
1 resposta

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: