Java 中正则表达式中的重音

2022-09-02 11:32:16

我想使用休眠验证器来验证一些列。据我所知,问题在于java中的\w标记不接受带有重音符号的字母。

有没有办法写正则表达式,以便像Relologuri这样的单词可以被验证(我不想写所有在括号之间带有重音符号的字母,因为我期望在很多列中写这个正则表达式)?


答案 1

Java 正则表达式文档中有一个关于 Unicode 类别的部分(搜索“Unicode 块和类别的类”)。如果你只是在寻找字母,我认为这是你想要的类别。\p{L}


答案 2

我有更多的运气:

\p{InCombiningDiacriticalMarks}+

在java中,我使用以下方法:

import java.text.Normalizer;
import java.text.Normalizer.Form;

public static String removeAccents(String text) {
    return text == null ? null :
        Normalizer.normalize(text, Form.NFD)
            .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}