Java - 密码策略验证
问题描述:
在我的Web应用程序中,我有以下要求。当用户首次注册时设置密码时,我有以下限制。Java - 密码策略验证
- 密码应包含6位数字。 (例如132715)
- 只有号码可以输入
- 没有升/降允许数目(例如123456,654321 - 不允许)例如121715,232254
- 3(或更多)相同数量的不能重复( - 不允许)。
任何人都可以澄清,如果这可以通过正则表达式来完成,还是更好地通过Java实现。如果可能的话,请给我一个示例代码?
答
你的问题似乎很有趣,所以我想我会放弃它。这应该做你正在寻找它做的事情,虽然我没有彻底测试它。那里可能有更简单的解决方案。
private static boolean validatePW(String pw) {
if(pw.length() == 6){
int pwInt = Integer.MIN_VALUE;
try{
pwInt = Integer.parseInt(pw);
char[] values = pw.toCharArray();
boolean asc = true;
boolean dec = true;
int[] map = new int[10];
map[values[0]-48] = 1;
for(int i = 1; i < values.length; i++){
asc = asc && values[i] - 1 == values[i-1];
dec = dec && values[i] + 1 == values[i-1];
map[values[i]-48] ++;
if(map[values[i]-48] == 3){return false;}
}
if(asc || dec){
return false;
} else {
return true;
}
} catch(NumberFormatException e){
return false;
}
}
return false;
}
这可以用正则表达式来完成。然而,你不能只是跳上,期待一个答案。请向我们展示一些您已经尝试或关注过的主题。 – 2012-07-24 17:30:18
我认为只有1和2可以用正则表达式完成。 – elias 2012-07-24 17:30:32
1和2很容易,长度匹配和匹配^ [\ d] + $,3只是2例,4需要一些代码,但不会特别困难。 – lynks 2012-07-24 17:30:43