Javascript中用于密码验证的正则表达式
我试图创建一个正则表达式,在用户创建密码时验证该密码。密码必须是:Javascript中用于密码验证的正则表达式,javascript,regex,Javascript,Regex,我试图创建一个正则表达式,在用户创建密码时验证该密码。密码必须是: 至少6个字符长,可以是任何类型的字符 使用的每个字符都需要在密码中精确显示3次 好例子: AAABBB ABABBA +++=== +ar++arra myyymm /Arrr/AA/ 有人知道哪个正则表达式可以实现这一点吗?在测试密码之前,您可以通过对密码进行排序来轻松操作: $('button')。在('click',function()上{ var s=$('#password').val(); var split=s
AAABBB
ABABBA
+++===
+ar++arra
myyymm
/Arrr/AA/
有人知道哪个正则表达式可以实现这一点吗?在测试密码之前,您可以通过对密码进行排序来轻松操作:
$('button')。在('click',function()上{
var s=$('#password').val();
var split=s.split(“”.sort().join(“”);
如果(/^(?:()\1{2}(?!\1)){2,}$/.test(split))
console.log(“有效密码”);
其他的
console.log(“无效密码”);
})
测试me
对于第一个选项,您必须在不使用正则表达式的情况下进行检查
var str = "your password";
var pattern = /(.)(.*\1){3}/;
if(str.length >= 6){
// It will give you boolean as return
// If it is match then it return true else false
pattern.test(str);
}
另一种解决方案,因为您允许使用代码(您的问题暗示您不会这样做;) 使用下面的函数(如
verifyPass
)应该可以做到这一点。它逐渐用空字符串替换任何有效的三个字母组合。检查是否在多个迭代(至少6个字符)中完成了此操作,并以空字符串结尾,这意味着它是一个有效的密码
功能验证通过(通过){
变量re=/^((?:(?!\1)。)*)\1((?:(?!\1)。*)\1((?:(?!\1)。*)$/,
cnt=0;
while(重新测试(通过)){
通过=通过。更换(重新命名为“$2$3$4”);
cnt++;
}
返回过程==''&&cnt>1;
}
变量测试项=[
'123123123',
"AAABBB",,
“aaabbaaa”,
“Qwerty”,
“阿巴巴”,
'+++===',
'111',
"qweqwd",,
“sdcjhsdfkj”,
“+ar++arra”,
“Myyyms”,
“/Arrr/AA/”
];
测试项目forEach(功能(项目){
文件。写入(“”+项+”
);
});代码>我可以给你一个答案,但请先解释一下为什么你希望密码的熵比需要的小三倍…?再仔细想想,我不太确定这是否可以用一个正则表达式来实现;绝对不能使用功能非常有限的JavaScript正则表达式。您需要两个步骤:首先对密码进行排序,然后使用正则表达式检查每个字符是否正好出现三次。这与正则表达式不太匹配(而且密码方案很糟糕)。如果你的目标是ES6,你可以把所有的角色扔到地图上数一数。效率较低的是,您可以对字符串进行排序,然后检查它是否包含3次运行(您可以为其生成一个正则表达式,但它比几乎任何其他选择都要复杂),没有人会要求这样愚蠢的限制password@sabithpocker-几乎所有密码强度检查都已过时且无用。如今,好密码的条件只有两个:足够长(越多越好)和抵抗字典攻击(这是问题本身)。“使用大写字母、小写字母、数字和特殊符号”这样的提示没有任何价值,即使对普通黑客来说也是如此。这并不能说明6个字符的总长度,对吗?至少6个字符并不完全是6:):@thomasayubt这将验证密码,如AAAAAA
-它只检查3的倍数,不是每个字符都有三个实例。您应该使用提供的一些测试表达式来尝试。