使用REGEX alpha验证并支持多种语言

时间:2014-03-15 20:48:20

标签: java regex

3 个答案:

答案 0 :(得分:3)

不明白为什么你在嵌套的角色类中包含了*。这只不过是工会,就像使用*一样好。要匹配unicode字母,您可以使用\p{L}

如果你已经使用Java 7,那么你可以使用Pattern.UNICODE_CHARACTER_CLASS标志或嵌入式标志 - (?U)和你的模式:

Pattern p = Pattern.compile("^[*\\w&&[^\\d_]]+$", Pattern.UNICODE_CHARACTER_CLASS);

如果您将正则表达式保留为字符串,则使用嵌入式标记:

rule = "(?U)^[*\\w&&[^\\d_]]+$";

答案 1 :(得分:1)

您是否查看了Pattern的文档?

在" Unicode脚本,块,类别和二进制属性的类":

\p{IsAlphabetic}    An alphabetic character (binary property)

所以你的模式可能是:

"\\p{IsAlphabetic}+"

答案 2 :(得分:0)

使用matches()的最短路径:

\\pL+    # no need to add anchors with matches() method

使用find()的最短路径:

\\PL     # stop at the first non letter character

注意:您也可以写\\p{L}\\P{L}\\pL\\PL是快捷方式。

但是如果你只需要匹配拉丁字符,最好使用:

\\p{isLatin}+