1

ユーザー名を検証する関数を構築しています。この場合、アルファベット文字のみを受け入れたいと考えています。提供されたユーザー入力をこの正規表現と照合しています。

[1-9!@#$%&*()_+=|<>?{}\\[\\]~-,]

これは、正規表現を利用する方法です。

public static String purgeInvalidLogin(String failedLogin, String pattern) {
    Pattern special = Pattern.compile (pattern);
    String purgedLogin = failedLogin.replaceAll(special.pattern(), ""); // remove any special characters before moving on
    purgedLogin = StringUtils.deleteWhitespace(purgedLogin);
    return purgedLogin;
}

ただし、これを実行しようとすると、次のメッセージが表示されます。

インデックス 25 付近の不正な文字範囲 [!@#$%&*()_+=|<>?{}[]~-,] ^

コンマを追加したときにのみ発生しました。また、式 [!@#$%&*()_+=|<>?{}[]~-\,] (コンマをエスケープ) を試してみましたが、役に立ちませんでした。上記の方法を使用して、正規表現を適切に使用してコンマを除外する方法を考えています。

前もって感謝します。

4

2 に答える 2

2

その直前のハイフンをエスケープします。その後に別の文字 (コンマ) を追加するとすぐに、文字の範囲を定義するものとして解釈されます。

[1-9!@#$%&*()_+=|<>?{}\\[\\]~\\-,]
于 2013-09-04T16:15:15.720 に答える