正则表达式留给 (不得包含字母或数字序列)和 (重复的数字或字母不要超过5次)。
我知道它反复出现的问题,但是我找不到我的要求的组合。当我尝试合并时出现错误
除此之外,我能够做到 我试图重复的次数不超过5次,但这一步不起作用
`^(?=.*?[a-zA-Z])(?=.*?[0-9])((.)\2{0,4}(?!\2)).{6,15}$`
部分工作的是^(?=.*?[a-zA-Z])(?=.*?[0-9]).{6,15}$
,我需要同时满足两个条件。
答案 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;
}