我想使用 Hibernate Validator 来验证一些列。据我了解,问题在于 java 中的 \w 标记不接受带有重音符号的字母。
有什么方法可以编写正则表达式,以便可以验证像 Relatório 这样的单词(我不想在括号之间写所有带重音的字母,因为我希望在很多列中编写这个正则表达式)?
我想使用 Hibernate Validator 来验证一些列。据我了解,问题在于 java 中的 \w 标记不接受带有重音符号的字母。
有什么方法可以编写正则表达式,以便可以验证像 Relatório 这样的单词(我不想在括号之间写所有带重音的字母,因为我希望在很多列中编写这个正则表达式)?
Java 正则表达式文档有一个关于 Unicode 类别的部分(搜索“Unicode 块和类别的类”)。如果您只是在寻找字母,我认为\p{L}
是您想要的类别。
我有更多的运气:
\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}+", "");
}