Java 正则表达式匹配中文
在 Java 中,可以使用正则表达式来匹配中文字符,以下是几种常见的方法:

基本方法
使用 Unicode 范围
中文字符的 Unicode 范围主要包括:
- 基本汉字:
\u4e00-\u9fff - 扩展A区:
\u3400-\u4dbf - 扩展B-F区:
\u20000-\u2a6df,\u2a700-\u2b73f,\u2b740-\u2b81f,\u2b820-\u2ceaf,\uf900-\ufaff
String regex = "[\u4e00-\u9fa5]"; // 匹配单个中文字符 String regex = "^[\u4e00-\u9fa5]+$"; // 匹配全中文字符串
使用预编译的字符类
String regex = "[\\u4e00-\\u9fa5]";
完整示例
import java.util.regex.*;
public class ChineseRegex {
public static void main(String[] args) {
// 测试字符串
String test1 = "你好世界";
String test2 = "Hello 世界";
String test3 = "123 中文";
String test4 = "汉字";
// 匹配单个中文字符
Pattern pattern1 = Pattern.compile("[\u4e00-\u9fa5]");
System.out.println("单个中文字符匹配:");
System.out.println(test1 + ": " + pattern1.matcher(test1).find()); // true
System.out.println(test2 + ": " + pattern1.matcher(test2).find()); // true
System.out.println(test3 + ": " + pattern1.matcher(test3).find()); // true
System.out.println(test4 + ": " + pattern1.matcher(test4).find()); // true
// 匹配全中文字符串
Pattern pattern2 = Pattern.compile("^[\u4e00-\u9fa5]+$");
System.out.println("\n全中文字符串匹配:");
System.out.println(test1 + ": " + pattern2.matcher(test1).matches()); // true
System.out.println(test2 + ": " + pattern2.matcher(test2).matches()); // false
System.out.println(test3 + ": " + pattern2.matcher(test3).matches()); // false
System.out.println(test4 + ": " + pattern2.matcher(test4).matches()); // true
// 匹配包含中文的字符串
Pattern pattern3 = Pattern.compile(".*[\u4e00-\u9fa5].*");
System.out.println("\n包含中文的字符串匹配:");
System.out.println(test1 + ": " + pattern3.matcher(test1).matches()); // true
System.out.println(test2 + ": " + pattern3.matcher(test2).matches()); // true
System.out.println(test3 + ": " + pattern3.matcher(test3).matches()); // true
System.out.println(test4 + ": " + pattern3.matcher(test4).matches()); // true
}
}
更全面的中文匹配
如果需要匹配更全面的中文字符(包括扩展区),可以使用以下正则表达式:
String regex = "[\u4e00-\u9fa5\u3400-\u4dbf\uf900-\ufaff\u3300-\u33ff\ufe30-\ufe4f\uf900-\ufaff\u2f800-\u2fa1f]";
注意事项
- Java 正则表达式中的反斜杠需要双重转义,如
\\u4e00 - Unicode 范围可能会随着 Unicode 标准的更新而变化
- 对于性能敏感的场景,建议预编译正则表达式(使用
Pattern.compile()) - 考虑使用
Pattern.CASE_INSENSITIVE标志如果需要不区分大小写的匹配(虽然中文通常不涉及大小写)
方法可以帮助你在 Java 中有效地匹配中文字符。

