为了使A与Z匹配,我们将使用正则表达式:
[A-Za-z]
如何允许正则表达式匹配用户输入的utf8字符?例如环保部等中文单词
Answers:
您正在寻找的是Unicode属性。
例如\p{L}
来自任何语言的任何形式的信件
因此,匹配这样一个中文单词的正则表达式可能类似于
\p{L}+
有许多这样的属性,有关更多详细信息,请参见regular-expressions.info。
另一种选择是使用修饰符
Pattern.UNICODE_CHARACTER_CLASS
在Java 7中,有一个新属性Pattern.UNICODE_CHARACTER_CLASS
可以启用预定义字符类的Unicode版本,有关更多详细信息和链接,请参见我的回答。
你可以做这样的事情
Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);
并且\w
将匹配所有字母和所有数字从任何语言(当然还有一些字的组合字符喜欢_
)。
要匹配单个字符,您可以简单地将它们包括在字符类中,既可以作为文字,也可以通过\u03FB
语法。
显然,您经常无法以表意语言列出所有允许的字符。为了使regex根据类型或代码块来处理unicode字符,还支持在此处定义的各种其他转义符。查看“ Unicode支持”部分,尤其是对Character
类和Unicode标准本身的引用。
[a-z]+
或者[a-z]{3}
甚至[a-z]{2,10}
。唯一不同的是您在量词所应用的字符类中所允许的内容。
为了解决NLS支持问题并避免接受英语特殊字符,我们可以使用以下模式...
[a-zA-Z0-9 \ u0080- \ u9fff] * +
对于UTF代码点参考:http : //www.utf8-chartable.de/unicode-utf8-table.pl
程式码片段:
String vowels = "అఆఇఈఉఊఋఌఎఏఐఒఓఔౠౡ";
String consonants = "కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళవశషసహ";
String signsAndPunctuations = "కఁకంకఃకాకికీకుకూకృకౄకెకేకైకొకోకౌక్కౕకౖ";
String symbolsAndNumerals = "౦౧౨౩౪౫౬౭౮౯";
String engChinesStr = "ABC導字會";
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU = Pattern
.compile("[a-zA-Z0-9 \\u0c00-\\u0c7f]*+");
System.out.println(ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU.matcher(vowels)
.matches());
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_CHINESE = Pattern
.compile("[a-zA-Z0-9 \\u4e00-\\u9fff]*+");
Pattern ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN = Pattern
.compile("[a-zA-Z0-9 \\u0080-\\u9fff]*+");
System.out.println(ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN.matcher(engChinesStr)
.matches());
UNICODE_CHARACTER_CLASS
flag或embeddable支持Unicode正则表达式(?U)
。见stackoverflow.com/questions/4304928/...