我刚刚回答了另一个正则表达式问题。
jQuery method to validate a password with specific rules
目标是创建一个采用以下
的正则表达式!@#$%^&*()-=
等我找到了一个与\W
匹配非字字符的特殊字符的漂亮解决方案。这应该与特殊字符匹配。
但我想知道这个解决方案是否可以干掉,不需要多个条件。我原来的解决方案是一行
$.validator.addMethod("pwcheck", function(value) {
return /[A-Z]+[a-z]+[\d\W]+/.test(value)
});
这符合前三个条件,但有一个问题。它只按照确切的顺序匹配。这意味着小写必须遵循大写,依此类推。虽然像这样的例子传递了
AGHjfd8437
其他人失败了
agTF8djRd4
我不得不修改我的解决方案以通过这样的测试。这就是我想出来的。
$.validator.addMethod("pwcheck", function(value) {
return /[A-Z]+/.test(value) && /[a-z]+/.test(value) &&
/[\d\W]+/.test(value) && /\S{7,}/.test(value);
});
但我想知道这是否可以合并为一个正则表达式。如果是这样,它会比第二个看起来更干净吗?
答案 0 :(得分:6)
您可以使用正向前瞻(?=..)
:
/^(?=.*[A-Z])(?=.*[a-z])(?=.*[\d\W]).{7,}$/
每个正向前瞻都会确保存在于指定角色的任何位置。最后的.{7,}
将匹配至少七个字符。从开始^
到结束$
。
希望它有所帮助。