我正在尝试创建一个正则表达式,用于在创建用户密码时对其进行验证。密码必须是:
很好的例子:
AAABBB
ABABBA
+++===
+ar++arra
myyymm
/Arrr/AA/
有谁知道哪个正则表达式可以实现这个目标?
答案 0 :(得分:2)
您可以在测试之前对密码进行排序,从而轻松自己:
$('button').on('click', function(){
var s = $('#password').val();
var split = s.split("").sort().join("");
if(/^(?:(.)\1{2}(?!\1)){2,}$/.test(split))
console.log("Valid password");
else
console.log("Invalid password");
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input id="password">
<button>Test me</button>
&#13;
答案 1 :(得分:0)
对于第一个选项,您必须在没有正则表达式的情况下进行检查。
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);
}
答案 2 :(得分:0)
另一种解决方案,因为你允许代码(你的问题意味着你不会;)
使用下面verifyPass
之类的函数应该可以解决问题。它逐渐用空字符串替换任何有效的三字母组合。检查这是在多次迭代中完成的(它至少是6个字符)并最后以空字符串结尾,这意味着它是一个有效的密码。
function verifyPass(pass) {
var re = /^(.)((?:(?!\1).)*)\1((?:(?!\1).)*)\1((?:(?!\1).)*)$/,
cnt=0;
while(re.test(pass)) {
pass = pass.replace(re, '$2$3$4');
cnt++;
}
return pass==='' && cnt>1;
}
var testItems = [
'123123123',
'AAABBB',
'AAABBBAAA',
'Qwerty',
'ABABBA',
'+++===',
'111',
'qweqwd',
'sdcjhsdfkj',
'+ar++arra',
'mYYYmms',
'/Arrr/AA/'
];
testItems.forEach(function(item) {
document.write('<span style="color:' + (verifyPass(item) ? 'green' : 'red') + ';">' + item + '</span> <br/>');
});