Java中正则表达式的重音

Raf*_*ael 16 java regex hibernate-validator

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

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

Rac*_*lit 31

Java的正则表达式的文件对Unicode的类别(搜索"类对Unicode块和类别")的部分.如果您只是在寻找信件,我认为这\p{L}是您想要的类别.

  • 惊人!!`\ p {L}`只匹配任何语言的字母,甚至是强调的字母!它匹配:`文字`,`символы`,`字符`,`tähemärki`但它不是`♥♦♣♠•◘○◙♂♀♪♫◄►◄`或数字.太棒了! (2认同)

Hav*_*nar 12

我有更多运气:

\p{InCombiningDiacriticalMarks}+
Run Code Online (Sandbox Code Playgroud)

在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}+", "");
}
Run Code Online (Sandbox Code Playgroud)

  • 此方法可完美删除所有类型的重音.将"áàääççïñ"变成"aaaecui n".它很棒地正常化. (3认同)