我想在包含至少3个类型的字符从这种类型的android正则表达式:含有至少3个字符类型的android正则表达式
Number, upper letter, lower letter and special characters,
,我发现这个表达式
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,100}
但这告诉最小8和最大10个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符。 但我需要这4种类型的3种类型,不是全部4种类型。
例如这个口令是有效的:
Test1987(因为它包含3类型=上字符,下,和数字) & est7sss(有效太它包含特殊字符,数字,和下字符)
密码无效:
test1987(仅包含两个类型的下限和数字)
我如何能做到这一点,请
-----------------编辑-------------
我用这样的fonction,它似乎工作
public boolean validatePassword(final String password){
Integer numberType = 0;
if(password.length() > 7){
if (password.matches(".*\\d.*")) {
numberType = numberType + 1;
}
if (password.matches(".*[a-z].*")) {
numberType = numberType + 1;
}
if (password.matches(".*[A-Z].*")) {
numberType = numberType + 1;
}
if (!password.matches("[A-Za-z0-9 ]*")) {
numberType = numberType + 1;
}
}
else{
return false;
}
if(numberType>2)
return true;
return false;
}
+0
我想问清问题,并尝试成为更具体的了解你正在谈论哪些类型? –
+0
我只是用例子来编辑我的问题,你能不能读一下,告诉我它是否更清楚? –
+1
纯粹的正则表达式解决方案将是丑陋的。最好在代码中处理这个问题。 –