JavaScript中的密码字符检查器
我试图构建一些东西来检查我在提示符中输入的密码,密码有大写字母、小写字母、特殊符号和长度……但有时当我只输入大写字母和小写字母时,我没有收到任何提示(你会在代码中看到它) 控制台中还有以下错误:JavaScript中的密码字符检查器,javascript,loops,for-loop,Javascript,Loops,For Loop,我试图构建一些东西来检查我在提示符中输入的密码,密码有大写字母、小写字母、特殊符号和长度……但有时当我只输入大写字母和小写字母时,我没有收到任何提示(你会在代码中看到它) 控制台中还有以下错误:无法读取hassuppercase“ 我将在这里发布代码: var parola = prompt('Introdu parola:'); function hasUpperCase(parola){ for(i = 0; i < parola.length; i++){ if(paro
无法读取hassuppercase“
我将在这里发布代码:
var parola = prompt('Introdu parola:');
function hasUpperCase(parola){
for(i = 0; i < parola.length; i++){
if(parola[i] === parola[i].toUpperCase()){
return true;
}
}
}
function hasLowerCase(parola){
for(i = 0; i < parola.length; i++){
if(parola[i] === parola[i].toLowerCase()){
return true;
}
}
}
var minLength = 8;
function isLongEnough(parola){
if(parola.length >= minLength){
return true;
}
}
function hasSpecialCharacter(parola){
var specialCharacters = "£$%^&*@~";
for(i = 0; i < parola.length; i++){
for(j = 0; j < specialCharacters.length; j++){
if(parola[i] === specialCharacters[j]){
return true;
}
}
}
}
function isPasswordValid(parola){
if(!hasUpperCase(parola)){
alert('The password requires a capital letter!');
var parola = prompt('Introdu parola:');
}
if(!hasLowerCase(parola)){
alert('The password requires a lower case letter!');
var parola = prompt('Introdu parola:');
}
if(!isLongEnough(parola)){
alert('The password is not long enough!');
var parola = prompt('Introdu parola:');
}
if(!hasSpecialCharacter(parola)){
alert('The password requires a special character');
var parola = prompt('Introdu parola:');
}
if((hasSpecialCharacter(parola) && hasLowerCase(parola) && hasUpperCase(parola) && isLongEnough(parola)){
}
}
isPasswordValid(parola);
var parola=prompt('introa parola:');
函数大写(parola){
对于(i=0;i=最小长度){
返回true;
}
}
函数具有特殊字符(parola){
var specialCharacters=“£$%^&*@~”;
对于(i=0;i
isPasswordValid
依次调用4个函数以检查其有效性,但如果其中任何一个函数失败,则不会重新检查提示值。它只要求您输入其他内容,然后继续。您可以通过在函数末尾重新调用isPasswordValid
来重新检查提示的有效性。在当您输入无效输入,然后输入有效输入时,该函数的结尾可防止出现其他提示
注意:对符号调用toLowerCase()
将返回该符号,因此@@@@AAAA
将是有效的。为了解决这个问题,我在函数中使用了正则表达式
var parola=prompt('introa parola:');
函数大写(parola){
返回/[A-Z]/.测试(帕罗拉)
}
函数有小写字母(parola){
返回/[a-z]/.测试(帕罗拉);
}
var minLength=8;
功能足够长(parola){
返回parola.length>=minLength;
}
函数具有特殊字符(parola){
返回/[£$%^&*@~]/.测试(帕罗拉);
}
var错误消息;
函数isPasswordValid(parola){
如果(!hassuppercase(parola)){
errorMessage='密码需要大写字母!';
}
如果(!haslowercise(parola)){
errorMessage='密码需要小写字母!';
}
否则,如果(!足够长(帕罗拉)){
errorMessage='密码不够长!';
}
如果(!hasSpecialCharacter(parola)){
errorMessage='密码需要特殊字符';
}
否则{
警报(“密码有效”);
返回;
}
parola=提示(错误消息);
isPasswordValid(帕罗拉);
}
isPasswordValid(帕罗拉);
isPasswordValid
按顺序调用4个函数以检查其有效性,但如果其中任何一个函数失败,则不会重新检查提示值。它只要求您输入其他内容,然后继续。您可以通过在函数末尾重新调用isPasswordValid
来重新检查提示的有效性。在当您输入无效输入,然后输入有效输入时,该函数的结尾可防止出现其他提示
注意:对符号调用toLowerCase()
将返回该符号,因此@@@@AAAA
将是有效的。为了解决这个问题,我在函数中使用了正则表达式
var parola=prompt('introa parola:');
函数大写(parola){
返回/[A-Z]/.测试(帕罗拉)
}
函数有小写字母(parola){
返回/[a-z]/.测试(帕罗拉);
}
var minLength=8;
功能足够长(parola){
返回parola.length>=minLength;
}
函数具有特殊字符(parola){
返回/[£$%^&*@~]/.测试(帕罗拉);
}
var错误消息;
函数isPasswordValid(parola){
如果(!hassuppercase(parola)){
errorMessage='密码需要大写字母!';
}
如果(!haslowercise(parola)){
errorMessage='密码需要小写字母!';
}
否则,如果(!足够长(帕罗拉)){
errorMessage='密码不够长!';
}
如果(!hasSpecialCharacter(parola)){
errorMessage='密码需要特殊字符';
}
否则{
警报(“密码有效”);
返回;
}
parola=提示(错误消息);
isPasswordValid(帕罗拉);
}
isPasswordValid(帕罗拉);
除了实现问题之外,首先通过检查isPasswordValid函数中的null或未定义的第一件事来修复错误。此外,正如Patrick明智地建议的那样,使用正则表达式进行这些检查。我还建议在检查函数中始终通过在每个for循环后返回false来返回bool。除了实现问题之外考虑到这些问题,首先通过检查isPasswordValid函数中的null或未定义的第一件事来修复错误。此外,正如Patrick明智地建议的那样,使用regex进行这些检查。我还建议始终在检查函数中通过在每个for循环后返回false来返回bool。该错误是导致提示取消的原因。因此,我认为您应该使用文本字段中的值并验证该值
下面是做这件事的工作方法
/^(?=.{1,}[a-z])(?=.{1,}[A-Z])(?=.{1,}([£$%^&*@~])).{8,20}$/
^ // the start of the string
(?=.{1,}[a-z]) // use positive look ahead to see if at least one lower case letter exists
(?=.{1,}[A-Z]) // use positive look ahead to see if at least one upper case letter exists
(?=.{1,}[£$%^&*@~]) // use positive look ahead to see if at least one underscore or special character exists
.{8,20} // gobble up the entire string and match between 8 and 20
$ // the end of the string
function isPasswordValid(parola)
{
if(!parola)
return false;
var reg = /^(?=.{1,}[a-z])(?=.{1,}[A-Z])(?=.{1,}([£$%^&*@~])).{8,20}$/g;
if(parola && reg.test(parola)){
//do stuff here
}
}
function isPasswordValid(parola){
if(!parola)
return false;
.
.
.
.
.
.
if(parola && (hasSpecialCharacter(parola) && hasLowerCase(parola) && hasUpperCase(parola) && isLongEnough(parola))){
// do stuff here
}