-3

私のWebアプリケーションでは、次の要件があります。ユーザーが初めてサインアップするときにパスワードを設定する際に、次の制約があります。

  1. パスコードには6桁の数字が含まれている必要があります。(例:132715)
  2. 数字のみ入力可能
  3. 昇順/降順の数字は許可されていません(例:123456、654321-許可されていません)
  4. 3つ(またはそれ以上)の同じ番号を繰り返すことはできません(例:121715、232254-許可されていません)。

誰かがこれが正規表現を介して実行できるかどうか、またはJavaを介して実装する方がよいかどうかを明確にできますか。可能であれば、誰かが私にサンプルコードを提供できますか?

4

2 に答える 2

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 に答える
1

非常に多くの制約があるため、Javaを使用してこれを検証する必要があると思います。ApacheCommonsのStringUtils
を使用すると役立ちます。

于 2012-07-24T17:31:40.387 に答える