Java 使用REGEX alpha进行验证,并支持多种语言
大家好,我在一个java验证程序库中工作。我的问题是如何在多种语言中验证输入是否为字母(无字母数字)。我有以下正则表达式:Java 使用REGEX alpha进行验证,并支持多种语言,java,regex,Java,Regex,大家好,我在一个java验证程序库中工作。我的问题是如何在多种语言中验证输入是否为字母(无字母数字)。我有以下正则表达式: public AlphaValidator() { super(); this.rule = "^[a-zA-Z[*]]+$"; // its fine with : angel, world, bottle, etc. } 没关系,但是如果这个库是为西班牙语输入或法语输入实现的,那么可能会使用诸如:vi unñandu或árbol之类的词,但它们与正则表
public AlphaValidator() {
super();
this.rule = "^[a-zA-Z[*]]+$"; // its fine with : angel, world, bottle, etc.
}
没关系,但是如果这个库是为西班牙语输入或法语输入实现的,那么可能会使用诸如:vi unñandu或árbol之类的词,但它们与正则表达式不匹配
我写了一些特殊的字符,比如:
private String getSpanishFilter() {
return "-ñ-Ñ-á-Á-é-É-í-Í-ó-Ó-ú-Ú-ü-Ü";
}
private String getFrenchFilter() {
return "â-à-ç-é-ê-ë-è-ï-î-ô-û-ù-Â-À-Ç-É-Ê-Ë-È-Ï-Î-Ô-Û-Ù";
}
但我认为这不是最好的解决办法。有什么帮助吗?你看了这些文档没有 在“Unicode脚本、块、类别和二进制属性的类”下: 因此,您的模式可以是:
"\\p{IsAlphabetic}+"
你看过这些文件有多久了 在“Unicode脚本、块、类别和二进制属性的类”下: 因此,您的模式可以是:
"\\p{IsAlphabetic}+"
不明白为什么要将
*
包含在嵌套字符类中。这只不过是联合,就像只使用*
一样好。要匹配unicode字母,可以使用\p{L}
如果您已经使用Java 7,那么您可以对给定的模式使用flag或嵌入式flag-(?U)
:
Pattern p = Pattern.compile("^[*\\w&&[^\\d_]]+$", Pattern.UNICODE_CHARACTER_CLASS);
如果您将regex保留为字符串,则使用嵌入式标志作为:
rule = "(?U)^[*\\w&&[^\\d_]]+$";
不明白为什么要将
*
包含在嵌套字符类中。这只不过是联合,就像只使用*
一样好。要匹配unicode字母,可以使用\p{L}
如果您已经使用Java 7,那么您可以对给定的模式使用flag或嵌入式flag-(?U)
:
Pattern p = Pattern.compile("^[*\\w&&[^\\d_]]+$", Pattern.UNICODE_CHARACTER_CLASS);
如果您将regex保留为字符串,则使用嵌入式标志作为:
rule = "(?U)^[*\\w&&[^\\d_]]+$";
最短路径与
匹配()
:
使用
find()
的最短路径:
注意:您也可以编写\\p{L}
和\\p{L}
,\\pL
和\\pL
是快捷方式
但如果只需要匹配拉丁字符,最好使用:
\\p{isLatin}+
最短路径与
匹配()
:
使用
find()
的最短路径:
注意:您也可以编写\\p{L}
和\\p{L}
,\\pL
和\\pL
是快捷方式
但如果只需要匹配拉丁字符,最好使用:
\\p{isLatin}+
你忘记了法语滤镜中的æ,Æ,œ,Œ。你忘记了法语滤镜中的æ,198,œ,Œ。对不起,我忘了解释这一点。我正在考虑用替换[*]替换那些方法中封装的其他语言中的新字符。很抱歉,我忘了解释这一点。我在考虑替换[*]中包含在Those方法中的其他语言的新字符。