Java中正则表达式的重音

时间:2011-04-20 16:05:24

标签: java regex hibernate-validator

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

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

2 个答案:

答案 0 :(得分:31)

Java regex documentation有一个关于Unicode类别的部分(搜索“Unicode块和类别的类”)。如果您只是在寻找信件,我认为\p{L}是您想要的类别。

答案 1 :(得分:11)

我有更多运气:

\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}+", "");
}