dis*_*ver 5 java regex internationalization
这是我目前的代码:
return str.matches("^[A-Za-z\\-'. ]+");
Run Code Online (Sandbox Code Playgroud)
我希望它包括国际信件.我如何用Java做到这一点?
谢谢.
Paw*_*yda 12
您似乎想要匹配所有字母字符.通常情况下,您可以使用Posix \p{Alpha}
表达式,通过您想要允许的标点符号进行扩展.正如Java正则表达式文档所述,它仅与ASCII匹配.
但是,什么文档没有说清楚,你可以使这个类使用Unicode字符.要做到这一点,你需要打开Unicode字符类匹配.
您可以通过以下两种方式之一完成此操作:
Pattern
传递UNICODE_CHARACTER_CLASS
常量的对象:Pattern p = Pattern.compile("^[p{Alpha}\\-'. ]+", UNICODE_CHARACTER_CLASS);
(?U)
嵌入式模式标志:str.matches("^(?U)[\\p{Alpha}\\-'. ]+");
概念证明:
String[] test = {"Jean-Marie Le'Blanc", "?ó??", "????????", "????"};
for (String str : test) {
System.out.print(str.matches("^(?U)[\\p{Alpha}\\-'. ]+") + " ");
}
Run Code Online (Sandbox Code Playgroud)
显而易见的结果是:
真的是真的
如果你认为一切都是正确的,我还有两点要做:
归档时间: |
|
查看次数: |
5310 次 |
最近记录: |