Javascript 我可以用哪种方式验证随机密码?

Javascript 我可以用哪种方式验证随机密码?,javascript,Javascript,我写了一个代码来生成一个随机密码,但是我可以用哪种方式检查密码中是否有数字、大写、小写和特殊字符 function randomPassword(length) { var chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*1234567890ABCDEFGHIJKLMNOPQRSTUVWYZ"; var pass = ""; for (var x = 0; x < length; x++) { var i = Math.fl

我写了一个代码来生成一个随机密码,但是我可以用哪种方式检查密码中是否有数字、大写、小写和特殊字符

function randomPassword(length) {
  var chars = "abcdefghijklmnopqrstuvwxyz!@#$%^&*1234567890ABCDEFGHIJKLMNOPQRSTUVWYZ";
  var pass = "";
  for (var x = 0; x < length; x++) {
    var i = Math.floor(Math.random() * chars.length);
    pass += chars.charAt(i);
  }
  return pass;
}
函数随机密码(长度){
var chars=“abcdefghijklmnopqrstuvxyz!@$%^&*1234567890abcdefghijklmnopqrstuvyz”;
var pass=“”;
对于(变量x=0;x
您需要的是正则表达式。以下是几个例子:

您可以生成密码,直到得到一个满足正则表达式的密码,这是最随机的方式:

函数随机密码(长度){
var chars=“abcdefghijklmnopqrstuvxyz!@$%^&*1234567890abcdefghijklmnopqrstuvyz”;
var pass=“”;
对于(变量x=0;xconsole.log(randomStrongPassword(8))
也许您可以保持原样,但为了确保您有四个必需的字符(数字、大写、小写和特殊字符),您可以稍后分别添加其中一个。这些字符也可以随机选择。

为什么不在不同的字符集上循环呢。那么您根本不必检查它:

function randomPassword(length) {
  var chars = [
    "abcdefghijklmnopqrstuvwxyz",
    "!@#$%^&*",
    "1234567890",
    "ABCDEFGHIJKLMNOPQRSTUVWYZ"
  ];
  var pass = "";
  while (pass.length < length) {
    chars.forEach(set => {
      if(pass.length < length) {
        var i = Math.floor(Math.random() * set.length);
        pass += set.charAt(i);
      };
    });
  };
  return pass;
};
函数随机密码(长度){
变量字符=[
“abcdefghijklmnopqrstuvxyz”,
"!@#$%^&*",
"1234567890",
“abcdefghijklmnopqrstuvyz”
];
var pass=“”;
while(通过长度<长度){
chars.forEach(集合=>{
if(通过长度<长度){
var i=Math.floor(Math.random()*set.length);
通过+=设定字符(i);
};
});
};
回程通行证;
};

while循环的每次迭代都会从每个集合中添加一个字符。在第二次循环中,我们检查第二次代码< >代码>长度>代码。如果
length
参数小于4,您可能还应该确保提前返回。

这是否回答了您的问题?在某些情况下,即使
length
的值高得离谱,最终还是会得到一个不符合标准的
pass
变量。随机性就是这样……但我会在生成密码之前检查这一点,因为你需要四组不同的字符:数字、大写、小写和特殊字符,并确保你从每一个字符中至少选择一个。准确,但以哪种方式?@Alessia,我添加了一个代码来实现这一点。希望有帮助。@Alessia您能使用提供的两种解决方案中的任何一种吗?不,重要的是检查生成密码,以确保安全性我不太明白。您仍将检查生成的密码。然后,您将知道,您还将在随机生成的密码上添加四个单独的字符。字符也是随机的。好吧,如果我按照你说的做了,我怎么会不小心把它们放在字符串中呢?在创建密码时,您可以将它们添加到循环中的密码中,而无需将它们放在末尾。或将结果字符串洗牌。