【问题标题】:prompt user to enter string which is free of special characters [@ . , !] Javascript提示用户输入不含特殊字符的字符串 [@ . , !] Javascript
【发布时间】:2020-10-09 13:38:59
【问题描述】:

在我的代码中,问题是它首先验证错误的输入,然后告诉用户再次输入,但是当用户再次输入错误时,它的验证失败并显示警报“正确输入”

编写一个程序来获取用户输入并存储用户名 在一个变量中。如果用户名包含任何特殊符号 之中 [@ 。 , !],提示用户输入有效的用户名。 对于 [@ 的字符代码。 笔记: 的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);
}

【问题讨论】:

  • 你不能简单地使用 if(!string.include('@')) 吗?
  • @dommilosz 不,我必须使用自己的验证来完成
  • @dommilosz 你的建议很有帮助 我以为我错了所以我可以应用它进行验证,但是 Internet 浏览器 11 和以前的版本不支持它,几乎很多用户仍在使用它

标签: javascript function validation for-loop prompt


【解决方案1】:

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

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

(现在您需要在checkValidName(userName) 代码中返回true 或false)

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

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

【讨论】:

  • 很好的答案,但我的功能是否正确,因为我认为问题出在其中
  • 好的,我确定了
【解决方案2】:

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

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);

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2016-09-27
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多