[英]Password - uppercase characters JavaScript
如果这是一个愚蠢的问题,请原谅。 我在uni上做一个网页设计课程,完全陷入困境。 我必须使用JavaScript验证密码,以确保密码具有大写,小写,数字字符和至少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
而不<1
(未找到正则表达式时search
返回负值) /i
在regexp中(不区分大小写-尝试找出大写/小写字符时不合适) []
代替()
) []
缺失( []
在正则表达式表示从给定的范围内的一个字符,所以[az]
将匹配的每个小写字母而az
将匹配只是字符串“AZ”) 它应该看起来像:
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
}
您的代码存在一些问题:
String.search()
返回-1
。 如果在第0th
(第一个)字符处找到字符串,则对< 1
检查仍将错误地返回true
。 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;
}
请注意,“搜索”是一个函数 ,因此您必须像y.search()那样调用它,而不是使用[]括号(用于访问成员的括号。y“搜索”将具有相同的效果,但是search []不好,因为它不是数组
尝试通过以下方式更改代码:
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;
}
主要问题是您使用的是'i'修饰符,它告诉regexp不区分大小写,请尝试不使用该修饰符。
为了改善用户体验,我使用了一条错误消息,因此,可以使用以下代码:
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;
您可以尝试以下方法:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.