提示用户输入不含特殊字符的字符串 [@ . , !] Javascript

prompt user to enter string which is free of special characters [@ . , !] Javascript

在我的代码中,问题是它在第一次输入错误时进行验证,然后告诉用户再次输入,但是当用户再次输入错误时,它的验证失败并显示警报 "correct in"

编写一个程序来获取用户输入并存储用户名 在一个变量中。如果用户名包含任何特殊符号 之中 [@ 。 , !], 提示用户输入有效的用户名。 对于 [@ 的字符代码。 笔记: 的ASCII码!是 33 , 的 ASCII 码是 44 的 ASCII 码。是 46 @的ASCII码为64

var userName=prompt("Enter your Input: ");
checkValidName(userName);
function checkValidName(un)
{
    var message;
    var split=[];
    var arr=[];
    for(var i=0;i<un.length;i++)
    {
        split[i]=un.split("&nbsp;");
        arr[i]=un.charCodeAt(i);
        if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
        {
                message="Correct User Name";
        }
        while(arr[i]==33||arr[i]==44||arr[i]==46||arr[i]==64)
        {
            alert("please enter a valid userName");                                                                                                                   
            userName=prompt("Enter your Input: ");
            split[i]=un.split("&nbsp;");
            arr[i]=un.charCodeAt(i);
            if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
            {
                message="correct in";
                break;
            }
        }

    }
    alert(message);
}

与其在验证函数内部询问,我有一个使用该函数的循环:

    var userName=prompt("Enter your Input: ");
    while (!checkValidName(userName)){
        alert("please enter a valid userName");   
        userName=prompt("Enter your Input: ");
    };

(现在您需要在 checkValidName(userName) 代码中 return truefalse

编辑:关于函数本身,查看 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match 我认为你可以使用

const checkValidName = (username) => username.match(/[\@\.\,\!]/)===null;

我发现问题出在调用函数上,因为函数只被调用一次,但这段代码在没有函数使用的情况下运行良好,并验证用户直到输入正确的值

var userName=prompt("Enter your Input: ");
var message;
var split=[];
var arr=[];
for(var i=0;i<userName.length;i++)
{
    split[i]=userName.split("&nbsp;");
    arr[i]=userName.charCodeAt(i);
    if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
    {
            message="Correct User Name";
    }
    while(arr[i]==33||arr[i]==44||arr[i]==46||arr[i]==64)
    {
        alert("please enter a valid userName");                                                                                                                   
        userName=prompt("Enter your Input: ");
        for(var i=0;i<userName.length;i++)
        {
            split[i]=userName.split("&nbsp;");
            arr[i]=userName.charCodeAt(i);
            if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
            {
                break;
            }
        }
    }

}
alert(message);