密码-大写字符JavaScript
Password - uppercase characters JavaScript
如果这是一个愚蠢的问题请原谅。我在大学里学网页设计,完全被卡住了。我必须使用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
(当没有找到regexp时,search
返回负值) -
/i
in regexp(不区分大小写-当试图找出大写/小写字符时不合适) - 搜索函数调用错误(使用
[]
代替()
) - 在regexp中
[]
缺失([]
在regexp中意味着给定范围内的一个字符,因此[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
}
你的代码有几个问题:
- 如果没有找到正则表达式,则
-
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;
}
注意"search"是一个函数,所以你必须像y.search()那样调用它,而不是用[]括号(用于访问成员)。Y "search"也有同样的效果,但是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;
}
相关文章:
- 使用JSON.parse时出现无效字符javascript错误
- 使用特殊字符 Javascript 对 URL 进行编码
- 如何替换不可打印的unicode字符(Javascript)
- 正则表达式密码允许特殊字符 JavaScript
- 正则表达式不允许特殊字符(Javascript)
- 如何删除字段中的字符 javascript
- 自动删除新字符 JavaScript
- 按下退格键时删除一组字符(Javascript)
- 获取某些字符 JavaScript 的所有可能组合
- 如何获取有关输入名称长度的字符 - javascript 的警报
- 当前字符JavaScript的RegExp
- 不允许使用除允许使用的字符javascript regex之外的特殊字符
- Regex,只允许一组特定的字符(Javascript)
- 缺少空白后的字符-javascript
- 输入只允许英文和非英文字符javascript
- 如何检查字符串是否有起始字符是特殊字符:javascript
- 正则表达式(regex): /W带连字符(javascript)
- 测试特殊字符JavaScript
- 密码-大写字符JavaScript
- 如何提取类型数字的最后字符javascript/jquery