8

このようなメソッドで a を検証する必要があります。

    validateFileName(Editable s) {
        String filtered_str = s.toString();
        if (filtered_str.matches(".*[regexp].*")) {
            filtered_str = filtered_str.replaceAll("[regxp]", "");
            s.clear();
            s.append(filtered_str);}

すべての不正な文字と空白を除外するには、どの正規表現を使用すればよいですか? 私はLinuxを使用しています

4

2 に答える 2

11

POSIX 準拠のオペレーティング システムを使用している場合、ファイル名に使用できる文字は、az、AZ、0 ~ 9、ピリオド、アンダースコア、およびハイフンです。したがって、「不正な」文字に一致する正規表現は次のようになります。

[^-_.A-Za-z0-9]

補遺: これは、完全に移植可能なファイル名が必要な場合です。以下のJosipのコメントで修正されたように、POSIX自体は実際にはより多くの文字を許可しています。

于 2014-01-22T18:11:43.533 に答える
6

あなたの考えが、リーガルとスペース文字を除外することだけである場合は、次のようなものを使用できます:

'^[^*&%\s]+$'

「不正な」文字を文字のリストに追加できる場所 (この場合、*、&、%、およびスペースは無視されます) \sはスペースです! の^内部は[]正規表現構文の一部であり、内部の文字と一致しない[]ことを意味します。

于 2012-04-25T21:44:26.297 に答える