Java - 密码策略验证

时间:2012-07-24 17:26:47

标签: java regex validation web

在我的网络应用程序中,我有以下要求。当用户第一次注册时,我在设置密码时遇到以下限制。

  1. 密码应包含6位数字。 (例如132715)
  2. 只能输入数字
  3. 不允许上升/下降数字(例如123456,654321 - 不允许)
  4. 3(或更多)相同的数字不能重复(例如121715,232254 - 不允许)。
  5. 任何人都可以澄清这是否可以通过正则表达式完成,还是通过Java实现更好。如有可能,有人可以提供示例代码吗?

2 个答案:

答案 0 :(得分:1)

有这么多限制,我认为你应该使用Java验证这一点 您可以使用Apache Commons的StringUtils来帮助您。

答案 1 :(得分:1)

你的问题似乎很有趣,所以我想我会试一试。这应该做你想要做的事,虽然我没有彻底测试它。那里可能有更简单的解决方案。

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;
}