在线正则表达式测试工具 (最常用、最快捷)
这类工具非常适合快速验证正则表达式的基本功能,无需安装任何软件,打开浏览器即可使用。

强烈推荐:Regex101
这是目前公认最好用的在线正则表达式测试工具,功能强大且界面友好。
- 网址: https://regex101.com/
- 特点:
- 实时预览: 输入正则表达式和文本后,结果会实时高亮显示。
- 详细解释: 右侧面板会详细解释正则表达式的每一个部分(如
\d代表数字,{3}代表三次)。 - 调试功能: 可以逐步查看正则表达式的匹配过程,理解回溯等复杂行为。
- 支持多种语言: 可以选择 Java、Python、JavaScript 等不同的语法风格。
- 社区库: 可以保存和分享你的正则表达式,也可以查看社区中其他人分享的复杂正则。
- 速查表: 内置完整的正则表达式速查手册。
使用场景: 当你快速写好一个正则,想看看它是否能正确匹配,或者想学习某个元字符的含义时,Regex101 是首选。
备选:RegexPlanet
功能同样非常全面,也是一个非常优秀的在线工具。
- 网址: https://regexplanet.com/
- 特点:
- 同样支持多种语言(包括 Java)。
- 提供了丰富的测试用例功能,可以预设多组输入数据进行测试。
- 界面布局清晰,信息展示直观。
Java IDE 内置工具 (开发时最方便)
如果你使用的是主流的 Java IDE(如 IntelliJ IDEA 或 Eclipse),它们已经内置了非常强大的正则表达式测试功能,无需切换窗口。

IntelliJ IDEA
IntelliJ 的正则表达式测试工具是其“查找/替换”功能的一部分,非常强大。
-
如何使用:
- 打开任意一个
.java文件。 - 按
Ctrl + Shift + R(Windows/Linux) 或Cmd + Shift + R(macOS) 打开“在文件中替换”的对话框。 - 在“查找”输入框中输入你的正则表达式。
- 关键步骤: 勾选旁边的 *”** (正则表达式) 图标。
- 在“替换为”输入框中可以留空或输入替换内容。
- 在下方的 “预览” 窗格中,你可以看到:
- 左侧是所有匹配项的列表。
- 右侧是选中匹配项在代码中的上下文高亮。
- 你可以直接在预览窗口中编辑文本,实时测试匹配效果。
- 打开任意一个
-
特点:
- 无缝集成: 直接在开发环境中使用,无需切换工具。
- 上下文感知: 可以直接在当前文件的内容上进行测试。
- 支持正则替换: 不仅能测试匹配,还能直接测试替换逻辑。
Eclipse
Eclipse 也提供了类似的功能。
-
如何使用:
- 打开“查找和替换”对话框 (
Ctrl + H或Cmd + H)。 - 切换到 “文件搜索” (File Search) 选项卡。
- 在“要搜索的字符串”中输入你的正则表达式。
- 勾选 “正则表达式” (Regular expression) 选项。
- 点击“查找”后,结果会显示在搜索视图中,并高亮匹配的文本。
- 打开“查找和替换”对话框 (
-
特点:
- 功能相对 IntelliJ 简单一些,但对于日常测试已经足够。
- 同样集成在开发环境中。
独立桌面应用程序 (功能更专业)
如果你需要一个功能更专业、更强大的独立工具,可以考虑以下选择。
Regex Coach
这是一个经典的桌面正则表达式测试工具,非常小巧且功能全面。
- 下载: http://weitz.de/regex-coach/
- 特点:
- 双向同步: 在左侧输入正则,右侧输入文本,匹配结果会双向高亮。
- 调试信息: 可以显示正则引擎的匹配步骤和回溯信息,对于优化和调试复杂正则非常有帮助。
- 语法检查: 会检查正则表达式的语法是否正确。
- 跨平台: 支持 Windows, macOS, Linux。
使用场景: 当你需要深入研究正则的匹配机制、性能瓶颈,或者进行非常复杂的调试时,Regex Coach 是一个利器。
编写一个简单的 Java 程序 (最灵活)
如果以上工具都无法满足你的特定需求(需要集成到你自己的项目中),最直接的方法就是写一个简单的 Java 程序来测试。
下面是一个可以直接运行的 Java 测试类。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTester {
public static void main(String[] args) {
// 1. 定义要测试的正则表达式
// 示例:匹配一个有效的电子邮件地址
String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
// 2. 定义要测试的文本
String text1 = "test.email@example.com";
String text2 = "invalid-email.com";
String text3 = "another.test@sub.domain.co.uk";
// 3. 编译正则表达式
// Pattern.CASE_INSENSITIVE 表示忽略大小写
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
// 4. 创建 Matcher 对象
Matcher matcher1 = pattern.matcher(text1);
Matcher matcher2 = pattern.matcher(text2);
Matcher matcher3 = pattern.matcher(text3);
// 5. 测试并打印结果
System.out.println("测试文本: \"" + text1 + "\"");
System.out.println("正则表达式: " + regex);
System.out.println("是否匹配: " + matcher1.matches()); // matches() 要求整个字符串都匹配
System.out.println("-------------------------------------");
System.out.println("测试文本: \"" + text2 + "\"");
System.out.println("正则表达式: " + regex);
System.out.println("是否匹配: " + matcher2.matches());
System.out.println("-------------------------------------");
System.out.println("测试文本: \"" + text3 + "\"");
System.out.println("正则表达式: " + regex);
System.out.println("是否匹配: " + matcher3.matches());
System.out.println("-------------------------------------");
// 使用 find() 查找字符串中的所有匹配项
String textWithMultipleEmails = "Contact us at support@example.com or sales@example.org.";
Matcher matcher4 = pattern.matcher(textWithMultipleEmails);
System.out.println("在文本中查找所有邮箱: \"" + textWithMultipleEmails + "\"");
while (matcher4.find()) {
System.out.println("找到邮箱: " + matcher4.group());
}
}
}
如何使用:
- 将上述代码保存为
RegexTester.java文件。 - 编译并运行:
javac RegexTester.java && java RegexTester - 修改
regex和text变量的值,即可进行你自己的测试。
特点:
- 完全可控: 你可以随心所欲地修改代码,添加任何你需要的测试逻辑。
- 环境一致: 测试环境与你最终运行代码的环境完全相同。
- 可集成: 可以轻松地将测试逻辑集成到你的项目中,实现自动化测试。
总结与推荐
| 工具类型 | 推荐工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 在线工具 | Regex101 | 功能强大、实时预览、详细解释、无需安装 | 需要联网,不适合处理敏感数据 | 快速验证、学习、日常调试 |
| IDE 内置 | IntelliJ IDEA | 无缝集成、上下文感知、支持替换 | 依赖 IDE 环境 | 在编写代码时进行即时测试 |
| 桌面应用 | Regex Coach | 专业调试、双向同步、回溯分析 | 需要下载安装,界面稍显陈旧 | 深入分析复杂正则的性能和匹配逻辑 |
| 自定义代码 | Java 程序 | 完全可控、环境一致、可集成 | 需要编写代码 | 特殊需求、自动化测试、项目集成 |
我的建议:
- 日常快速开发和测试: 首选 Regex101。
- 在 IntelliJ IDEA 中编码时: 直接使用其内置的查找/替换功能。
- 需要深入调试复杂正则: 使用 Regex Coach。
- 有特殊集成需求或自动化测试: 编写一个简单的 Java 测试类。
