正则表达式与拉丁字符

Rei*_*erd 12 java regex unicode

我有这个正则表达式:

if (cadena.matches("^[a-zA-Z ]+$")) return true;
Run Code Online (Sandbox Code Playgroud)

它接受从A到Z的小写和大写.也接受空格.

但这只适用于英语.例如,在加泰罗尼亚语中我们有'ç'字符.我们还有'á'或'à'等字符.

有些谷歌和我找不到任何方法来做到这一点.

我发现我可以过滤掉UTF-8,但这会接受不是字母的字符.

我该如何实现呢?

mvp*_*mvp 24

使用这个正则表达式:

[\p{L}\s]+
Run Code Online (Sandbox Code Playgroud)

\p{L} 表示任何Unicode字母.

小提琴.演示.

  • 这不符合非拉丁字符,这不是OP正在寻找的(尽管他们确实接受了这个答案)?例如,它匹配"안녕".如果你特意想要匹配拉丁字符,那么似乎`\ p {IsLatin}`更合适([参考](http://docs.oracle.com/javase/8/docs/api/java/util/regex) /Pattern.html)). (3认同)
  • 详细说明,如果这是一个混乱点,拉丁语!= ASCII.大多数拉丁字符,如`ë`,`ɶ`或`ṧ`,只能[由Unicode表示](https://en.wikipedia.org/wiki/Latin_script_in_Unicode).`\ p {IsLatin}`将匹配这些字符,而不匹配其他非拉丁字母的字符. (2认同)