我必须实施有关密码的规则。规则说新密码不得包含在旧密码中。规范说我们考虑包含至少4个连续字符。我正在寻找正则表达式,而不是java实现。
示例:
OLD_PASSWORD = "Support1234"
NEW_PASSWORD = "Support567" <-- not allowed
NEW_PASSWORD = "Support" <-- not allowed
NEW_PASSWORD = "Suppression" <-- not allowed
NEW_PASSWORD = "Supersport" <-- not allowed
NEW_PASSWORD = "123port" <-- not allowed
NEW_PASSWORD = "1234" <-- not allowed
NEW_PASSWORD = "123pork" <-- allowed
NEW_PASSWORD = "pork123" <-- allowed
这种正则表达式有点复杂,我尝试了类似的东西:[^OLD_PASSWORD]{4}
但它并不那么容易。
总结一下:我的字符串不应包含确定字符串的4个连续字符,以便通过验证 请帮助thx:)
答案 0 :(得分:1)
为了保证密码长度始终> 4 char,我们可以从旧传递中获取前4个字符,然后每隔4个字符比较一次,直到oldpassword长度结束。
Boolean found = false;
int l = 0, r = 4;
while( found == false && r <= oldpass.length()){
String tmp = oldpass.substring(l,r);
found = newpass.contains(tmp);
l++; r++;
}
请记住,子串从l到r-1。之后你可以检查找到的布尔值:)
答案 1 :(得分:0)
将新密码转换为Pattern newPasswordPattern =&#34;([1]?[2]?[3]?[p]?[o]?[r]?[t]?)&#34 ;; 查找旧的匹配并检查它们的长度。