13

特定の文字を除くすべての文字に一致する正しい構文は何ですか?

[A-Z] [a-z]たとえば、文字と数字以外のすべてに一致させたいと思います[0-9]

私は持っている

string.matches("[^[A-Z][a-z][0-9]]")

これは間違っていますか?

4

6 に答える 6

27

はい、そのようにネストする必要はありません[]。代わりにこれを使用してください:

"[^A-Za-z0-9]"

それはすべて1つの文字クラスです。

于 2013-04-25T06:31:07.230 に答える
7

文字以外のものと一致させたい場合は、Unicode プロパティを調べる必要があります。

\p{L}任意の言語の任意の種類の文字です

代わりに大文字の「P」を使用すると、それは否定になるため\P{L}、文字以外のものと一致します。

\dまたは\p{Nd}数字が一致している

したがって、現代の Unicode スタイルでの式は次のようになります。

否定された文字クラスを使用するか

[^\p{L}\p{Nd}]

または否定されたプロパティ

[\P{L}\P{Nd}]

次のことは、matches()完全な文字列に対して式を照合するため、式は文字列内の 1 つの文字のみで真になります。したがって、数量詞を追加する必要があります。

string.matches("[^\p{L}\p{Nd}]+")

完全な文字列に非英数字のみが含まれ、少なくとも 1 つ含まれている場合は、true を返します。

于 2013-04-25T06:43:47.910 に答える
1

ほぼ正しい。あなたが望むのは:

string.matches("[^A-Za-z0-9]")

ここに良いチュートリアルがあります

于 2013-04-25T06:31:51.420 に答える
1
string.matches("[^A-Za-z0-9]")
于 2013-04-25T06:30:40.540 に答える
0

文字列に _ 記号が含まれていないことを確認したい場合は、単に次のようなものを使用します。

    Pattern pattern = Pattern.compile("_");
    Matcher matcher = Pattern.matcher(stringName);
    if(!matcher.find()){
       System.out.println("Valid String");
    }else{
        System.out.println("Invalid String");
     }
于 2013-12-30T02:12:01.827 に答える
0

文字クラスを否定できます:

"[^abc]"       // matches any character except a, b, or c (negation).
"[^a-zA-Z0-9]" // matches non-alphanumeric characters.
于 2020-10-02T14:24:12.277 に答える