温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java regex如何匹配中文

发布时间:2026-10-04 20:16:12 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 中,正则匹配中文主要依赖于 Unicode 范围 或 Unicode 属性。下面按常见场景说明。


一、最常用:匹配常用汉字(CJK 统一汉字)

1️⃣ 使用 Unicode 范围

String regex = "[\\u4e00-\\u9fa5]";

示例:

String text = "你好Hello世界";
String regex = "[\\u4e00-\\u9fa5]+";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while (m.find()) {
    System.out.println(m.group());
}

输出:

你好
世界

✅ 覆盖:基本汉字(最常用)


二、匹配所有中文(含扩展汉字)

2️⃣ 包含 CJK 扩展区

String regex = "[\\u4e00-\\u9fff]";

或更完整:

String regex = "[\\u3400-\\u4dbf\\u4e00-\\u9fff\\uf900-\\ufaff]";

三、使用 Unicode 属性(推荐,更规范)

3️⃣ 匹配“任何表意文字”

String regex = "\\p{IsIdeographic}";

或:

String regex = "\\p{script=Han}";

示例:

String regex = "\\p{script=Han}+";

✅ 优点:

  • 不依赖具体码点
  • 支持 Java 8+

四、匹配“是否包含中文”

4️⃣ 判断是否包含中文

boolean hasChinese = text.matches(".*[\\u4e00-\\u9fa5].*");

五、注意事项

⚠️ Java 字符串转义

正则写在字符串中时:

"\\u4e00"   // 正确
"\u4e00"    // 错误(会被当成真实字符)

六、常见组合示例

只允许中文

text.matches("[\\u4e00-\\u9fa5]+");

中文 + 数字

"[\\u4e00-\\u9fa5\\d]+"

中文姓名(2~5 字)

"[\\u4e00-\\u9fa5]{2,5}"

如果你有具体场景(比如:校验姓名、提取中文、过滤 emoji、中文标点等),可以告诉我,我给你更精确的正则。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手