一百零二 我是一个初学者,grasshopper岁学习JS.

100 我有了创建一个随机密码生成器的 idea . 我成功地做到了这一点.我现在已经创建了一个函数,以便您可以 Select 指定您希望在密码中包含的字母、数字和特殊字符的数量.

100 现在我想要显示密码中有多少个密码.我怎么才能做到这一点呢?

100 我有4个数组,包括数字(1-9)、大写字母(A-Z)、小写字母(a-z)和特殊字符(!、@、#、$、%、^、&、*、<、>、?).

100 多个函数创建了STING:随机密码.他们有一个可以倒计时的var,但当用户输入的细节少于密码的总长度时,它就不起作用了.(很难解释,请查看代码.)

如何计算该字符串中有多少个数字、大写、小写和特殊字符?

100 到目前为止,我的代码如下:

// const: all specific options + all
const numbers = [
    '0',
    '1',
    '2',
    '3',
    '4',
    '5',
    '6',
    '7',
    '8',
    '9'
];
const undercase = [
    'a',
    'b',
    'c',
    'd',
    'e',
    'f',
    'g',
    'h',
    'i',
    'j',
    'k',
    'l',
    'm',
    'n',
    'o',
    'p',
    'q',
    'r',
    's',
    't',
    'u',
    'v',
    'w',
    'x',
    'y',
    'z'
];
const uppercase = [
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G',
    'H',
    'I',
    'J',
    'K',
    'L',
    'M',
    'N',
    'O',
    'P',
    'Q',
    'R',
    'S',
    'T',
    'U',
    'V',
    'W',
    'X',
    'Y',
    'Z'
];
const special = [
    '!',
    '@',
    '#',
    '$',
    '%',
    '^',
    '&',
    '*',
    '<',
    '>',
    '?'
];
const all = numbers.concat(undercase, uppercase, special);


// needed var's
var password;
var randomPasswordString;

var amountNumbersInPassword = 0;
var amountUndercaseInPassword = 0;
var amountUppercaseInPassword = 0;
var amountSpecialInPassword = 0;


// input: length password & specifics? 
var lengthPassword = '10';
var specific = true;


// if specifics: how much + functions
var amountNumbers = 2;
function randomNumbers (){
    for (var a = 0; a < amountNumbers; a = a + 1){
        var random = pickRandom(numbers);
        password = password + random;
        amountNumbersInPassword = amountNumbersInPassword + 1;
    }
}

var amountUndercase = 2;
function randomUndercase (){
    for (var b = 0; b < amountUndercase; b = b + 1){
        var random = pickRandom(undercase);
        password = password + random;
        amountUndercaseInPassword = amountUndercaseInPassword + 1;
    }
}

var amountUppercase = 2;
function randomUppercase (){
    for (var c = 0; c < amountUppercase; c = c + 1){
        var random = pickRandom(uppercase);
        password = password + random;
        amountUppercaseInPassword = amountUppercaseInPassword + 1;
    }
}

var amountSpecial = 2;
function randomSpecial (){
    for (var d = 0; d < amountSpecial; d = d + 1){
        var random = pickRandom(special);
        randomPasswordString = randomPasswordString + random;
        password = password + randomPasswordString.slice(9);
        amountSpecialInPassword = amountSpecialInPassword + 1;
        
        pickRandom
    }
}

var amount = (amountNumbers + amountUndercase + amountUppercase + amountSpecial + 1);

function specificPassword (){
   for (amount; amount < lengthPassword; amount = amount + 1) {
        var random = pickRandom(all);
        var randomPasswordString = randomPasswordString + random;
        password = password + randomPasswordString.slice(9);
    }
}


// generator
// without specifics
if (specific === false) {
    for (var e = 0; e < lengthPassword; e = e + 1) {
    var random = pickRandom(all);
    var password = password + random;
    }
} 

// with specifics
else {
    randomNumbers();
    randomUndercase();
    randomUppercase();
    randomSpecial();
    specificPassword();
}


// output
console.log('This is your password with ' + (-9 + password.length) + ' characters.');
console.log(password.slice(9));
console.log('');
console.log('This password has:');
console.log(amountNumbersInPassword + ' numbers');
console.log(amountUndercaseInPassword + ' letters in undercase');
console.log(amountUppercaseInPassword + ' letters in uppercase');
console.log(amountSpecialInPassword + ' special characters');

非常感谢!

阿德里安五世

请注意,我是初学者,英语不是我的母语.我很抱歉我的拼写错误和我的简单代码.请留下更好的标签等建议.

推荐答案

你的代码真的很大,我无法判断...看看这是不是你所需要的:

我正在使用正则表达式(这是一件很酷的事情,您可以稍后学习)

function countLowerCaseLetters(input) {
    return input.length - input.replace(/[a-z]/g, '').length;
}

function countUpperCaseLetters(input) {
    return input.length - input.replace(/[A-Z]/g, '').length;
}

function countNumbers(input) {
    return input.length - input.replace(/[0-9]/g, '').length;
}

function countSpecialChars(input) {
    return input.length - input.replace(/[!@#$%^&*<>?]/g, '').length;
}

Javascript相关问答推荐

togglePopover()不打开但不关闭原生HTML popover'

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

Angular:动画不启动

在Vite React库中添加子模块路径

如何将Map字符串,布尔值转换为{key:string;value:bo布尔值;}[]?<>

将旋转的矩形zoom 到覆盖它所需的最小尺寸&S容器

Prisma具有至少一个值的多对多关系

PDF工具包阿拉伯字体的反转数字

如何修复我的数据表,以使stateSave正常工作?

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

如何确保预订系统跨不同时区的日期时间处理一致?

在SHINY R中的嵌套模块中,不能使用Java代码

如何使用基于promise (非事件emits 器)的方法来传输数据?

使用线性插值法旋转直线以查看鼠标会导致 skip

Jexl to LowerCase()和Replace()

如果我的列有条件,我如何呈现图标?

在没有任何悬停或其他触发的情况下连续交换图像

ComponentWillReceiveProps仍在React 18.2.0中工作

扩散运算符未按预期工作,引发语法错误

Google OAuth 2.0库和跨域开放程序的问题-策略错误