java - 不匹配不同语言的模式对象

标签 java regex

我有以下正则表达式,当用户输入英文时,它可以正常工作。 但是在使用葡萄牙语字符时总是失败。

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/

相关文章:

java - 排序线程按照创建/启动的顺序运行

java - Autowiring 依赖项注入(inject)失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException 如何解决它

javascript - 正则表达式匹配整个字符串但不区分大小写

sql - 即时选择和替换(干净)数据 - SQL

java - 使用锦标赛树查找数组中的第 K 个最大元素

Java 多线程带来的性能提升非常小

java - stunnel - 如何不间断地更换服务器证书

regex - 如何匹配后跟空格和另一个管道的管道字符?

python - 以下字符串的正则表达式模式?

javascript - 如何在 JavaScript 中使用正则表达式获取 2 个字符串之间的内容