繁体   English   中英

Javascript中的正则表达式,用于密码验证

[英]Regular Expression in Javascript for password validation

我正在尝试创建一个正则表达式,以在用户创建密码时对其进行验证。 密码必须是:

  1. 至少6个字符长,可以是任何类型的字符
  2. 每个使用的字符都需要在密码中正确显示3次。

很好的例子:

AAABBB
ABABBA
+++===
+ar++arra
myyymm
/Arrr/AA/

有谁知道哪个正则表达式可以做到这一点?

您可以通过在测试密码之前对密码进行排序来减轻自己的负担:

 $('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> 

对于第一个选项,您必须检查不使用正则表达式。

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类的功能可以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/>'); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM