首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 正則表達式判斷字符串是否包含中文

     編輯:Java 相關知識

核心正則

[\u4e00-\u9fa5]

匹配 CJK 統一表意文字基本區(常用漢字約 2 萬字)。

完整工具類

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ChineseDetector {
    private static final Pattern CHINESE_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");

    public static boolean containsChinese(String str) {
        if (str == null || str.isEmpty()) return false;
        Matcher matcher = CHINESE_PATTERN.matcher(str);
        return matcher.find(); // 只要找到一個即返回 true
    }

    public static void main(String[] args) {
        System.out.println(containsChinese("中國China")); // true
        System.out.println(containsChinese("Hello World")); // false
        System.out.println(containsChinese("")); // false
        System.out.println(containsChinese(null)); // false
    }
}

擴展:提取所有中文字符

public static String extractChinese(String str) {
    if (str == null) return "";
    Matcher m = CHINESE_PATTERN.matcher(str);
    StringBuilder sb = new StringBuilder();
    while (m.find()) sb.append(m.group());
    return sb.toString();
}
// "Hello 世界 123" → "世界"

補充:Unicode 範圍擴展

  • 基本區:\u4e00-\u9fa5(最常用)
  • 擴展 A:\u3400-\u4dbf
  • 擴展 B:\U00020000-\U0002A6DF(需 JDK 支持補充字符平面)
  • 兼容性:\uF900-\uFAFF

如需全覆蓋,可組合:[\u3400-\u4dbf\u4e00-\u9fa5\uF900-\uFAFF]。

性能提示

  • 編譯 Pattern 為靜態常量,避免重複編譯開銷。
  • matcher.find() 比 matches() 快(不需匹配整串)。
  • 極高頻調用可考慮預編譯到工具類單例。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved