Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用REGEX alpha进行验证,并支持多种语言_Java_Regex - Fatal编程技术网

Java 使用REGEX alpha进行验证,并支持多种语言

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之类的词,但它们与正则表

大家好,我在一个java验证程序库中工作。我的问题是如何在多种语言中验证输入是否为字母(无字母数字)。我有以下正则表达式:

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方法中的其他语言的新字符。