温馨提示×

温馨提示×

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

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

java regex能匹配中文吗

发布时间:2026-09-14 04:34:26 来源:亿速云 阅读:103 作者:小樊 栏目:编程语言

可以的,Java 的正则表达式(regex)完全可以匹配中文,前提是你理解字符编码和正则写法。

1️⃣ 基本原理

Java 内部使用 Unicode,中文字符在 Unicode 中位于:

  • 常用汉字:\u4E00 – \u9FA5
  • 扩展汉字(部分):\u3400 – \u4DB5

所以可以用 Unicode 范围来匹配中文。


2️⃣ 常见写法

✅ 匹配一个中文字符

String regex = "[\\u4E00-\\u9FA5]";

示例:

"中".matches("[\\u4E00-\\u9FA5]"); // true

✅ 匹配多个中文

String regex = "[\\u4E00-\\u9FA5]+";

示例:

"中文测试".matches("[\\u4E00-\\u9FA5]+"); // true
"中文abc".matches("[\\u4E00-\\u9FA5]+"); // false

✅ 包含中文(不要求全是中文)

String regex = ".*[\\u4E00-\\u9FA5].*";

3️⃣ 使用 \p{IsHan}(推荐,更规范)

Java 支持 Unicode 属性:

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

匹配任意汉字(比 \u4E00-\u9FA5 更全面)。

"汉字".matches("\\p{IsHan}+"); // true

4️⃣ 实际示例(提取中文)

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        String text = "abc中文123测试";
        Pattern p = Pattern.compile("\\p{IsHan}+");
        Matcher m = p.matcher(text);
        while (m.find()) {
            System.out.println(m.group());
        }
    }
}

输出:

中文
测试

5️⃣ 注意事项

  • 编码问题:源码文件、运行环境都要是 UTF-8
  • String.matches() 是全匹配,不是包含匹配
  • 若要支持生僻字,建议用 \p{IsHan} 而不是固定区间

如果你有具体场景(比如:校验、提取、替换、Spring 校验注解等),可以告诉我,我可以给你更合适的正则。

向AI问一下细节

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

AI
助
手