正则表达式输入密码,出现错误

时间:2018-08-07 15:39:37

标签: javascript regex

正则表达式留给 (不得包含字母或数字序列)和 (重复的数字或字母不要超过5次)。

我知道它反复出现的问题,但是我找不到我的要求的组合。当我尝试合并时出现错误

除此之外,我能够做到 我试图重复的次数不超过5次,但这一步不起作用

`^(?=.*?[a-zA-Z])(?=.*?[0-9])((.)\2{0,4}(?!\2)).{6,15}$`

部分工作的是^(?=.*?[a-zA-Z])(?=.*?[0-9]).{6,15}$,我需要同时满足两个条件。

1 个答案:

答案 0 :(得分:0)

根据建议,使用RegExp首先检查字符串是否包含允许的字符。那应该简单易读。

然后,如果通过,则将字符串拆分为每个字符的数组,在其上循环,然后检查每个字符的计数。 Lodash之类的工具可以帮助后者,但是您也可以使用纯JavaScript编写它。

if (/^[a-zA-Z][0-9]$/.test(password)) {
    const chars = password.split('');
    const counts = {};
    chars.forEach(char => {
        if (counts[char] && counts[char] > 5) {
            isValid = false;
        } else {
            counts[char] = counts[char] ? counts[char] + 1 : 1;
        }
    });
    return isValid;
}