我已经阅读了很多关于防止重复字符的 Stack Overflow 答案,但这些都是当正则表达式字符串位于一行时,如下所示:
^(?=.{4})(?!.{32})(?!.*(.)\1{4})\w[\w.-]+\w$
我正在使用此概念进行密码验证http://www.webdesignerdepot.com/2012/01/password-strength-verification-with-jquery/这意味着我希望每次将一个有效类添加到列表项中验证规则通过。密码字段上方有一个说明列表,如下所示:
<ul>
<li id="letter" class="invalid">At least <strong>3 letters</strong></li>
<li id="number" class="invalid">At least <strong>2 numbers</strong></li>
</ul>
<input type="password" id="input-password" name="password" autocomplete="off">
如果用户输入满足这一点,则指令旁边会打勾。
所以我有:
var pwd = $(this).val();
if ( pwd.match(/[A-z]{3,}/) ) {
$('#letter').removeClass('invalid').addClass('valid');
} else {
$('#letter').removeClass('valid').addClass('invalid');
}
if ( pwd.match(/\d{2,}/) ) {
$('#number').removeClass('invalid').addClass('valid');
} else {
$('#number').removeClass('valid').addClass('invalid');
}
我希望 {3,} 可以工作,但在这种情况下,它只验证 3 个字母是否连续,而不是它们是否出现在完整字符串中的任何位置。例如“a1aa”是无效的,但“aaa”是有效的。我已经阅读了很多,但我只是不明白在这种情况下需要什么,因为我找不到像这样拆分正则表达式的其他示例。
有什么帮助吗?
编辑
抱歉,正如 nhahtdh 指出的那样,标题与问题无关!我实际上还有一个额外的验证要求,即密码不能重复同一个字母超过 3 次。例如,'mississippi' 无效,因为它有超过 3 个字母 's' 实例。