5

次の正規表現があります。

String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";

これは私にとっては問題なく機能しますが、UTF-8 発音記号を使用できないことを除きます (Ă ă â Î î ș ş ț)。

現在の正規表現は、すでに行っていることに加えて、発音記号を受け入れるだけで済みます。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

7

それらをキャッチするには、 POSIX 文字クラスを調べる必要があります。悲しいことに、Java Regex は言語固有の POSIX クラスをサポートしていませんが、適合する可能\p{Graph} A visible character: [\p{Alnum}\p{Punct}]性 があります。\p{Print} A printable character: [\p{Graph}\x20]

\p{L}ソリンの提案によると、おそらく(文字)が最適です。

import java.util.regex.Pattern;

public class Regexer {

    public static void main(String[] args) {
        int maxCharacters = 100;
        String data = "Ă ă Â â Î î Ș ș Ț ț";
        String pattern = "^[\\p{L}0-9+,. '-]{1," + maxCharacters + "}$";

        Pattern p = Pattern.compile(pattern);

        if (p.matcher(data).matches()) {
            System.out.println("Hit");
        } else {
            System.out.println("No");
        }

    }
}

これは私にとってはうまくいきます。

于 2012-04-17T09:54:26.720 に答える