# Java 正则测试器

在线测试 java.util.regex 正则：(?…) 命名组、占有优先量词与原子组、Pattern 标志、\\d 的 ASCII 与 UNICODE\_CHARACTER\_CLASS 语义、可直接粘贴的 Java 代码。

> 标准页面: https://elysiatools.com/zh/tools/java-regex-tester

- **分类:** Development

- **关键词:** java 正则测试, 正则表达式 在线, pattern matcher, 占有量词, 命名分组

## 概述

面向 java.util.regex（Pattern / Matcher）方言的正则测试器。按 Java 写法输入——命名组 (?…)、反向引用 \\k、占有优先量词如 a\*+、原子组 (?>…)——先转译到平台的 ECMAScript 引擎再对测试串执行，报告每个匹配、带名字的捕获组以及 $1 / ${name} Java 替换语法的替换预览，并生成带正确 Pattern.CASE\_INSENSITIVE / MULTILINE / DOTALL / COMMENTS / UNICODE\_CHARACTER\_CLASS 标志与 matcher.group("name") 访问的 Java 代码。Java 特有语义得到尊重：\\d \\w \\s 默认只匹配 ASCII（勾选 Unicode 字符类可仿真 UNICODE\_CHARACTER\_CLASS）；占有优先与原子结构用前瞻捕获仿真，确实阻止回溯；Java 会拒绝的可变长度 lookbehind 等差异会在报告中注明（本仿真引擎更宽松）。

## 输入项

- **正则表达式** (text): (?\\d{4})-(?\\d{2})
- **测试字符串** (textarea): Paste the text to match against…
- **i — 忽略大小写** (checkbox)
- **m — 多行模式** (checkbox)
- **s — DOTALL（. 匹配换行）** (checkbox)
- **x — 注释模式** (checkbox)
- **u — Unicode 字符类** (checkbox)
- **g — 查找全部匹配** (checkbox)
- **替换模板（可选）** (text): ${name} / $1
- **Unicode 字符类（\d \w \s 匹配 Unicode）** (checkbox)

## 适用场景

- 在 Java 后端开发中编写并调试包含命名组或反向引用的复杂 Pattern 规则时
- 需要使用占有优先量词或原子组来消除回溯、优化正则表达式执行性能时
- 需要验证 \d、\w 等元字符在 ASCII 默认模式与 UNICODE_CHARACTER_CLASS 模式下的匹配行为时

## 工作原理

- 输入符合 java.util.regex 语法的正则表达式与目标测试文本，并根据需要配置匹配标志（如 CASE_INSENSITIVE、MULTILINE、DOTALL 等）。
- 系统将 Java 特有语法（包括命名组、占有优先量词及字符类语义）转译为仿真逻辑并在测试串上执行匹配。
- 查看高亮匹配结果、提取的命名/编号捕获组详情以及基于 $1 或 ${name} 的文本替换预览。
- 直接复制工具同步生成的包含 Pattern 编译标志和 matcher.group() 调用的 Java 示例代码。

## 使用案例

- 后端日志解析：提取带时间戳、线程名与日志级别的结构化数据
- 输入格式校验：使用命名捕获组验证邮箱、手机号或身份证等复杂字符串
- 文本批处理与重构：利用 $1 与 ${name} 模板将旧格式配置批量重写为新格式

## 常见问题

### Java 的 \d 和一般 JavaScript 正则中的 \d 有什么区别？

java.util.regex 默认情况下 \d、\w、\s 仅匹配 ASCII 字符；只有显式开启 UNICODE_CHARACTER_CLASS 标志时才会匹配全量 Unicode 数字或字符。

### 工具如何处理占有优先量词（如 ++、*+）？

工具通过前瞻捕获等机制仿真 Java 占有优先语义，量词一旦吞掉字符便彻底阻止回溯，准确反映 Java 运行时的真实匹配情况。

### 支持在替换模板中使用命名捕获组吗？

支持，可以使用 Java 规范的 ${name} 语法或 $1 等数字序号引用捕获组进行替换预览。

### 工具支持可变长度的反向预查（Lookbehind）吗？

仿真环境可能更宽容，但标准 Java 引擎要求 Lookbehind 具有明显的长度上限，若语法超出 Java 限制工具会提示差异。

### 生成的 Java 代码可以直接用于生产环境吗？

可以，生成的代码包含正确的 Pattern.compile 标志组合与 Matcher 提取逻辑，可直接粘贴到 Java 项目中使用。

## 相关工具

- [PCRE2 正则测试器](https://elysiatools.com/zh/tools/pcre-regex-tester): 在线测试 PCRE2 正则：全套命名组语法（(?P)、(?)、(?\\u0027n\\u0027)）、占有优先量词、原子组、\\A \\z \\h 简写——附 pcre2grep 与 C API 代码片段。
- [C# 正则测试器（.NET）](https://elysiatools.com/zh/tools/csharp-regex-tester): 在线测试 .NET/C# 正则表达式：命名组 ((?…))、IgnoreCase/Multiline/Singleline 选项、匹配高亮、捕获组表格、可直接粘贴的 C# 代码和 IgnorePatternWhitespace 预览。
- [Python 正则测试器（re 模块）](https://elysiatools.com/zh/tools/python-regex-tester): 在线测试 Python re 模块正则：(?P…) 命名组、(?P=name) 反向引用、VERBOSE 模式、findall 行为与 \\g 替换模板——附可直接粘贴的 Python 代码。
- [正则表达式速查表](https://elysiatools.com/zh/tools/regex-cheat-sheet): 可搜索、多语言的正则表达式语法速查表——字符类、锚点、量词、分组与引用、环视断言、转义序列和标志位，并内置快速测试器
- [正则表达式解释器](https://elysiatools.com/zh/tools/ai-regex-explainer): 使用 AI 将正则表达式分解为可读的解释
- [多规则批量匹配](https://elysiatools.com/zh/tools/multi-pattern-matcher): 一次性对文本执行多个正则表达式模式匹配
- [正则表达式性能基准测试](https://elysiatools.com/zh/tools/regex-benchmark): 比较不同正则表达式的性能，识别瓶颈并检测退化情况
- [Glob转正则](https://elysiatools.com/zh/tools/glob-to-regex): 将文件匹配模式 (Glob) 转换为正则表达式

## 示例

- [正则表达式命名捕获组](https://elysiatools.com/zh/samples/regex-named-groups): 使用命名捕获组从文本中提取结构化数据的正则表达式模式集合。命名组通过为捕获的部分分配有意义的名称，使模式更易读和更易维护。
- [Android Java 字符串处理示例](https://elysiatools.com/zh/samples/android-string-processing-java): Android Java 字符串处理示例，包括字符串分割连接、正则表达式和字符串替换
- [正则替换示例](https://elysiatools.com/zh/samples/regex-replace): 用于文本转换和数据清洗的常用正则替换模式集合
- [常用正则表达式](https://elysiatools.com/zh/samples/regex-samples): 用于验证和匹配的常用正则表达式模式
