-3

在我的 Web 应用程序中,我有以下要求。用户首次注册时设置密码时,我有以下限制。

  1. 密码应包含 6 位数字。(例如 132715)
  2. 只能输入数字
  3. 不允许升序/降序数字(例如 123456、654321 - 不允许)
  4. 3 个(或更多)相同的数字不能重复(例如 121715、232254 - 不允许)。

任何人都可以澄清这是否可以通过正则表达式来完成,或者通过Java实现更好。如果可能的话,谁能给我一个示例代码?

4

2 回答 2

1

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

于 2012-07-24T17:31:40.387 回答
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;
}
于 2012-07-24T17:51:47.197 回答