Javascript 使用的任何字符的Regex Min 3

Javascript 使用的任何字符的Regex Min 3,javascript,regex,Javascript,Regex,我正在创建一个密码验证,要求如果使用一个字符,它必须使用3次,例如AAABBB、AABBAB或A999000AA 我想限制每个字符的使用次数为3次:^((()(?!(?:.*?\1){3}))*$ 如何确保每个字符至少出现3次 您可以这样做: var密码='AABBCCBACDDC', 检查={}, x; 对于(var i=password.length;i>0;i--){ x=密码[i-1]; 检查[x]=检查[x]?(检查[x]+1):1; } 用于(检查中的x){ 如果(勾选[x]!=3

我正在创建一个密码验证,要求如果使用一个字符,它必须使用3次,例如AAABBB、AABBAB或A999000AA

我想限制每个字符的使用次数为3次:
^((()(?!(?:.*?\1){3}))*$


如何确保每个字符至少出现3次

您可以这样做:

var密码='AABBCCBACDDC',
检查={},
x;
对于(var i=password.length;i>0;i--){
x=密码[i-1];
检查[x]=检查[x]?(检查[x]+1):1;
}
用于(检查中的x){
如果(勾选[x]!=3){
log('+x+'出现'+check[x]+'次!');
}

}
您可以这样做:

  • 为字符串排序(这降低了复杂性)
  • /^(?:()\1{2})+$/
    测试一个正则表达式,该正则表达式匹配三元组一个多个
  • 函数isStringValid(s){
    返回!!s
    .拆分(“”)
    .sort()
    .join(“”)
    .match(/^(?:()\1{2})+$/)
    ;
    }
    /**忽略其余的**/
    函数ValidateCtrl(){
    var字段=document.querySelector(“#Test”);
    var btn=document.querySelector(“#验证”);
    函数checkValue(){
    console.log('val',isStringValid(field.value));
    } 
    btn.addEventListener('click',checkValue);
    }
    文件
    .addEventListener('DOMContentLoaded',ValidateCtrl)
    ;
    
    #测试{
    边缘顶部:20px;
    显示:块;
    }
    验证
    
    好奇。。。为什么这是一个要求?我不会通过正则表达式这样做。只需使用javascript,这将使其更易于理解。特别是因为javascript的正则表达式引擎不支持lookbehind,这将使这变得更加困难creative@JPacheco您的问题以
    REGEX
    开头,您接受了一个根本没有REGEX的答案。lol。如果不需要使用regexp,请修复您的标题。我会尝试一下,我现在拥有的是:.*(\w)。*\1.*\1.*但这只是检查第一个字符是否至少出现3次,我如何将其应用于特定的文本框?@JPacheco因为您的示例显示,对于每个字符,其3次出现可能位于任何位置,您根本不能使用正则表达式。@JPacheco假设您的文本框是
    ,只需添加
    var pwd=document.getElementById('my-text-box').value就在我建议的代码段开始之前。我已经运行了函数,但它没有计算字符数,有什么理由不这样做吗?