我有以下正则表达式,当用户输入英文时,它可以正常工作。 但是在使用葡萄牙语字符时总是失败。
Pattern p = Pattern.compile("^[a-zA-Z]*$");
Matcher matcher = p.matcher(fieldName);
if (!matcher.matches())
{
....
}
有没有办法让模式对象识别有效的葡萄牙语字符,例如 ÁÂÃÀÇÉÊÍÓÔÕÚç....?
谢谢
最佳答案
您需要一个匹配所有字母类别的正则表达式。在世界上所有的脚本中,都有这样的负载,但幸运的是,我们可以告诉 Java 6 的 RE 引擎我们正在寻找一个字母,它将使用 Unicode 类的魔力来完成剩下的工作。特别是,L
类匹配所有类型的字母,大写字母、小写字母和“哦,这个概念不适用于我的语言”:
Pattern p = Pattern.compile("^\\p{L}*$");
// the rest is identical, so won't repeat it...
阅读 docs 时, 请记住,如果将反斜杠放在 Java 文字中,则需要加倍,以阻止 Java 编译器将它们解释为其他内容。 (另请注意,RE 不适合验证人名之类的事情,这是一个完全不同且困难得多的问题。)
关于java - 不匹配不同语言的模式对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8712975/