需要“至少两个”特定字符的密码正则表达式

Password regex that requires “at least two of” certain characters

我正在研究 javascript 正则表达式,其中包括具有以下条件。到目前为止没有运气。

-允许的最小字符数为 8。

-允许的最大字符数为 64。

-输入的文字至少应包括以下两项-数字、小写字母、大写字母 字母、特殊字符。

-不支持输入符号。

到目前为止,我得到的是@anubhava 的回答here

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,63}$

此正则表达式将强制执行这些规则:

-至少一个大写英文字母,(?=.*?[A-Z])

-至少一个小写英文字母,(?=.*?[a-z])

-至少一位数,(?=.*?[0-9])

-至少一个特殊字符,(?=.?[#?!@$%^&-])

-长度至少为 8.{8,63}(带锚点)

我的问题是如何满足我的第三个和第四个条件,即:-

-输入的文字至少应包括以下两项-数字、小写字母、大写字母 字母、特殊字符。

-不支持输入符号。

如有任何帮助,我们将不胜感激。

var regex =/^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,64}$/;

 
function test() {

 if(regex.test(document.getElementById("txtPassword").value)===false)
 {
 alert("Min 8,Max 64,At Least One Uppercase Character,One Lowercase Character,One Numeric Value And One Special Character(!@#$%^&*) Required ");
 }
 else
 {
 alert("Success");
 }
}
<input type="text" id="txtPassword" />
<button id="testBtn" onclick=test()>CheckPassword</button>
 

^(?!.*[^A-Za-z0-9#?!@$%^&*-]$)(?![a-z]*$)(?![A-Z]*$)(?![0-9]*$)(?![#?!@$%^&*-]*$).{8,64}$

字符串不能包含4组字符以外的任何符号

^(?!.*[^A-Za-z0-9#?!@$%^&*-]$)

字符串不应只包含小写字母

(?![a-z]*$)

字符串不应只包含大写字母

(?![A-Z]*$)

字符串不应只包含数字

(?![0-9]*$)

字符串不应只包含特殊字符

(?![#?!@$%^&*-]*$)

字符串应包含 8 到 64 个字符

.{8,64}$

2020-09-07 更新

如果字符串应包含列表 3 组 4 的符号

^(?!.*[^A-Za-z0-9#?!@$%^&*-]$)((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[#?!@$%^&*-])|(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*-])|(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&*-])).{8,64}$

字符串不能包含4组字符以外的任何符号

^(?!.*[^A-Za-z0-9#?!@$%^&*-]$)

然后是 4 个 3 组的 4 个变体,符号应属于:

(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])

(?=.*[a-z])(?=.*[A-Z])(?=.*[#?!@$%^&*-])

(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*-])

(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&*-])

最后字符串应由 8 到 64 个字符组成

.{8,64}$

文本至少包含 两个 以下 - 数字、小写字母、大写字母、特殊字符。 [A-Za-z0-9#?!@$%^&*-]

之外没有字符
^(?=.*?[A-Z])(?=.*?[a-z])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[A-Z])(?=.*?[0-9])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[A-Z])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[a-z])(?=.*?[0-9])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[a-z])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[0-9])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$

文本至少包含以下 三项 - 数字、小写字母、大写字母、特殊字符。 [A-Za-z0-9#?!@$%^&*-]

之外没有字符
^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$|^(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-])(?!.*?[^A-Za-z0-9#?!@$%^&*-]).{8,63}$