0

パスワード ポリシーのコードを書いています。

ポリシーによると、既に使用したものと同じ文字を使用することはできません。例: パスワード - 「s」が 2 つあるためパスワードを使用できません

どうやってやるの?

編集:

これが私の完全な実装です:

private static final String PASSWORD_DUPLICATE_CHARACTERS = "^(?:([a-zA-Z])(?!.*\\1))$";

pattern = Pattern.compile(PASSWORD_DUPLICATE_CHARACTERS);
this.checkForDuplicateLetters(LDAPNewUserPassword);

private boolean checkForDuplicateLetters(final String newPassword) throws LDAPException{
    LoggingEnt userEnt = new LoggingEnt();
    String userid = userEnt.getUseridCode();
    boolean foundDuplicate = false;

    matcher = pattern.matcher(newPassword);

    if (newPassword.matches(PASSWORD_DUPLICATE_LETTERS)){
        foundDuplicate = true;
        userEnt.setMsg1("Duplicate.");
        throw new LDAPException("Invalid password combination for " + userid, LDAPException.INVALID_CREDENTIALS);//BAristo
    } else {
        userEnt.setMsg1("Your password has been successfully changed.");
    }

    return matcher.matches();

}

4

3 に答える 3

1

次の正規表現を使用します。

private static final String PASSWORD_PATTERN_LOWER_8 = "^(?:([a-zA-Z])(?!.*\\1))$";
于 2013-07-12T07:17:38.527 に答える
0

私はこのようなものを使用します

^((.)(?!.*\1))+$

これは、文字列のどこにも文字が繰り返されていない文字列に一致します

于 2013-07-12T07:41:00.093 に答える