请原谅这是一个愚蠢的问题。我正在大学做一个网页设计主题,我完全陷入困境。我必须使用Javascript验证密码,以确保它具有uppsercase,小写,数字字符和至少4个字符。
这是我的代码,它给我警报说我没有包括角色,但当我包含它们时我仍然得到警报。任何帮助表示赞赏。
var y = document.forms["loginDetails"]["password"].value;
if (y.length < 4) {
alert("Your password needs a minimum of four characters")
}
if (y.search[/a-z/i] < 1) {
alert("Your password needs a lower case letter")
}
if (y.search[/A-Z/i] < 1) {
alert("Your password needs an uppser case letter")
}
if (y.search[/0-9/] < 1) {
alert("Your password needs a number")
return false;
}
答案 0 :(得分:2)
您的代码有多处错误
<0
而非<1
(search
在找不到正则表达式时返回负值)/i
(不区分大小写 - 在尝试计算大写/小写字符时不合适)[]
代替()
)[]
中的[]
表示来自给定范围的一个字符,因此[a-z]
将匹配每个小写字符,而a-z
将匹配字符串'a -z')应该看起来像:
if (y.length < 4) {
alert("Your password needs a minimum of four characters")
} else if (y.search(/[a-z]/) < 0) {
alert("Your password needs a lower case letter")
} else if(y.search(/[A-Z]/) < 0) {
alert("Your password needs an uppser case letter")
} else if (y.search(/[0-9]/) < 0) {
alert("Your password needs a number")
} else {
// Pass is OK
}
答案 1 :(得分:2)
您的代码存在一些问题:
String.search()
会返回-1
。如果在< 1
(第一个)字符处找到字符串,则对true
进行检查仍会错误地返回0th
。String.search()
是一个函数,需要使用围绕参数的括号(
)
来调用,而不是括号[
]
。/i
选项。false
。试试这个:
var error = false;
var message = '';
if (y.length < 4) {
message += "Your password needs a minimum of four characters. ";
error = true;
}
if (y.search(/[a-z]/) == -1) {
message += "Your password needs at least one lower case letter. ";
error = true;
}
if (y.search(/[A-Z]/) == -1) {
message += "Your password needs at least one upper case letter. ";
error = true;
}
if (y.search (/[0-9]/) == -1) {
message += "Your password needs a number.";
error = true;
}
if (error) {
alert(message);
return false;
}
答案 2 :(得分:1)
请注意,“搜索”是函数,因此您必须像y.search()一样调用它,而不是使用[]括号(用于访问成员。)“搜索”会有相同的效果,但搜索[]不正常,因为它不是一个数组
答案 3 :(得分:1)
尝试通过以下方式更改代码:
return false;
。search()
函数语法。/i
,因为它不会检查案例。<强>代码强>
var y = document.forms["loginDetails"]["password"].value;
if (y.length < 4) {
alert("Your password needs a minimum of four characters")
return false;
}
if (y.search(/[a-z]/) < 1) {
alert("Your password needs a lower case letter")
return false;
}
if (y.search(/[A-Z]/) < 1) {
alert("Your password needs an uppser case letter")
return false;
}
if (y.search(/[0-9]/) < 1) {
alert("Your password needs a number")
return false;
}
答案 4 :(得分:0)
主要问题是你正在使用'i'修饰符,它告诉正则表达式不区分大小写,尝试不使用此修饰符。
为了改善用户体验,我使用了一条错误消息,因此,你可以使用这段代码:
if(/[a-z]+/.test(s) && /[A-Z]+/.test(s) && /\d+/.test(s) && s.length >= 4)
return true;
alert("Your password needs Upper and lower case letters, numbers and a minimum four chars");
return false;
答案 5 :(得分:0)
你可以试试这个:
var y = document.forms["loginDetails"]["password"].value;
if (y.length < 4) {
alert("Password should contain minimum four characters");
return false;
}
var pwd=/^(?=.*[a-z])/;
var pwd1=/^(?=.*[A-Z])/;
var pwd2=/^(?=.*[0-9])/;
if (pwd.test(y) == false) {
alert("Password Should contain atleast One lowerCase letter");
return false;
}
if (pwd1.test(y) == false) {
alert("Password Should contain atleast One UpperCase letter");
return false;
}
if (pwd2.test(y) == false) {
alert("Password Should contain atleast One Number");
return false;
}
或者,你也可以在一行中做同样的事情:
var pwd=/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/;
if (pwd.test(y) == false) {
alert("Password Should contain atleast One Number, One UpperCase and a lowercase letter");
return false;
}