次の正規表現があります。
String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";
これは私にとっては問題なく機能しますが、UTF-8 発音記号を使用できないことを除きます (Ă ă â Î î ș ş ț)。
現在の正規表現は、すでに行っていることに加えて、発音記号を受け入れるだけで済みます。
どんな助けでも大歓迎です。ありがとう。
それらをキャッチするには、 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");
}
}
}
これは私にとってはうまくいきます。