我想使用Hibernate Validator来验证一些列。据我所知,问题在于java中的\ w标记不接受带有重音符号的字母。
有没有办法可以编写正则表达式,以便像Relatório这样的单词可以被验证(我不想写括号之间带有重音符号的所有字母,因为我希望在很多列中编写这个正则表达式) ?
答案 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}+", "");
}