Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的密码字符检查器_Javascript_Loops_For Loop - Fatal编程技术网

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
   }