正则表达式中的变音符号

5

我有以下正则表达式:

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

对我而言,它很好用,但是它不允许其中包含任何UTF-8音标符号(Ă ă Â â Î î Ș ș Ț ț)。

除了目前已经支持的内容,我只需要我的正则表达式接受这些音标符号。

非常感谢您的帮助。

1个回答

7
您需要查看POSIX字符类来捕获它们。不幸的是,Java Regex不支持特定于语言的POSIX类,但也许
\p{Graph} 可见字符: [\p{Alnum}\p{Punct}] 或者
\p{Print} 可打印字符: [\p{Graph}\x20]
可能适合您的需求。
最佳匹配建议使用Sorin提供的\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");
        }

    }
}

这对我来说可行。


6
或者更好的是[\p{L}],它表示字母。 - Sorin
嗯..我尝试使用\p{L},但仍然不起作用。到目前为止,唯一有效的是"^[\wĂăÂâÎîȘșȚț0-9+,. '-]{1,"+maxCharacters+"}$",但我不知道这样做是否合适。你有什么想法? - Fofole

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接