为了账号安全,请及时绑定邮箱和手机立即绑定

密码生成器问题

密码生成器问题

富国沪深 2022-10-21 10:22:19
我的作业代码应该提示用户输入密码长度和字符类型。出现提示时,我希望用户最多可以输入 3 个答案(即“大写、小写、特殊”),但是当我运行它时,它只接受一个答案。这是我的代码,请帮助:var length = Number(prompt("Enter a password length between 8 and 128")),  charType = prompt("Enter up to 3 character types: special, numeric, uppercase, lowercase."),  password = generatePassword();document.getElementById("display").value = password;document.getElementById('copy-btn').addEventListener('click', copyPassword);function generatePassword() {  var charSets = {    lowercase: 'abcdefghijklmnopqrstuvwxyz',    uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',    numeric: '0123456789',    special: ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'  };  var charSet = charSets[charType.toLowerCase()] || charSets.lowercase;  var retVal = "";  for (var i = 0; i < length; i++) {    retVal += charSet.charAt(Math.floor(Math.random() * charSet.length));  }  return retVal;}function copyPassword() {  document.getElementById("display").select();  document.execCommand("Copy");  alert("Password copied to clipboard!");}
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以将输入拆分为逗号和多个空格或仅多个空格(使用Phil建议的正则表达式)并遍历每个部分,将所有指定的字符集连接在一起。

var length = Number(prompt("Enter a password length between 8 and 128")),

  charType = prompt("Enter up to 3 character types: special, numeric, uppercase, lowercase."),


  password = generatePassword();

document.getElementById("display").value = password;

document.getElementById('copy-btn').addEventListener('click', copyPassword);


function generatePassword() {

  var charSets = {

    lowercase: 'abcdefghijklmnopqrstuvwxyz',

    uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',

    numeric: '0123456789',

    special: ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

  };

  var charSet = charType? 

    charType.split(/,\s*|\s+/).reduce((acc,curr)=>acc + charSets[curr.trim().toLowerCase()],"") 

    : charSets.lowercase;

  var retVal = "";

  for (var i = 0; i < length; i++) {

    retVal += charSet.charAt(Math.floor(Math.random() * charSet.length));

  }

  return retVal;

}


function copyPassword() {

  document.getElementById("display").select();

  document.execCommand("Copy");

  alert("Password copied to clipboard!");

}

<textarea id="display"></textarea>

<button id="copy-btn">Copy<button>


查看完整回答
反对 回复 2022-10-21
  • 1 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信