提示用户输入不含特殊字符的字符串 [@ . , !] 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(" ");
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(" ");
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 true
或 false
)
编辑:关于函数本身,查看 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(" ");
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(" ");
arr[i]=userName.charCodeAt(i);
if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
{
break;
}
}
}
}
alert(message);
在我的代码中,问题是它在第一次输入错误时进行验证,然后告诉用户再次输入,但是当用户再次输入错误时,它的验证失败并显示警报 "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(" ");
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(" ");
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 true
或 false
)
编辑:关于函数本身,查看 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(" ");
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(" ");
arr[i]=userName.charCodeAt(i);
if(arr[i]!=33||arr[i]!=44||arr[i]!=46||arr[i]!=64)
{
break;
}
}
}
}
alert(message);