在线 Java 正则表达式测试工具
这个工具允许您输入正则表达式、测试文本,并实时查看匹配结果、分组信息和详细解释。

<iframe src="https://regex101.com/" width="100%" height="600px" frameborder="0" allowfullscreen>
为什么推荐这个工具?
- 实时预览:输入正则表达式和文本后,结果会立刻显示,无需编译或运行代码。
- 详细解释:它会高亮显示匹配的文本,并用不同颜色标出捕获组 ,还能解释正则表达式的语法。
- 多语言支持:可以选择 Java、Python、JavaScript 等不同引擎,语法略有差异。
- 调试友好:可以清晰地看到哪些部分被匹配,哪些没有被匹配,非常有助于调试复杂的正则表达式。
如何使用 Java 代码进行正则表达式测试
如果您想在 Java 代码中测试正则表达式,主要有以下几个核心类:
java.util.regex.Pattern:编译后的正则表达式对象。java.util.regex.Matcher:对输入字符串进行匹配操作的对象。String.matches():一个便捷方法,用于检查整个字符串是否匹配正则表达式。
下面是一个完整的 Java 示例,演示了如何测试、查找、替换和分割字符串。
示例代码:RegexTester.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTester {
public static void main(String[] args) {
// 1. 准备工作:定义正则表达式和测试文本
// 示例:匹配一个或多个数字,后面跟着一个或多个字母
String regex = "\\d+[a-zA-Z]+";
String text = "订单号123abc,金额456XYZ,备注:无";
System.out.println("--- 1. 基本匹配测试 ---");
// 2. 编译正则表达式,创建 Pattern 对象
// 注意:为了避免每次调用都重新编译,Pattern 对象通常会被缓存或定义为静态常量
Pattern pattern = Pattern.compile(regex);
// 3. 创建 Matcher 对象,用于在文本中查找匹配项
Matcher matcher = pattern.matcher(text);
// 4. 查找并打印所有匹配项
System.out.println("原始文本: " + text);
System.out.println("正则表达式: " + regex);
System.out.println("所有匹配项:");
// matcher.find() 尝试找到下一个匹配的子序列
while (matcher.find()) {
// matcher.group() 返回最近一次匹配的子串
System.out.println(" - 找到匹配: " + matcher.group());
}
System.out.println("\n--- 2. 使用 String.matches() (整体匹配) ---");
// String.matches() 检查整个字符串是否完全匹配正则表达式
String text1 = "123abc"; // 完全匹配
String text2 = "123abc XYZ"; // 不完全匹配,因为后面还有空格和字符
System.out.println("字符串 '" + text1 + "' 是否匹配 '" + regex + "'? " + text1.matches(regex)); // true
System.out.println("字符串 '" + text2 + "' 是否匹配 '" + regex + "'? " + text2.matches(regex)); // false
System.out.println("\n--- 3. 分组测试 ---");
// 示例:匹配 "数字+字母" 的格式,并分别捕获数字和字母部分
String groupRegex = "(\\d+)([a-zA-Z]+)";
String groupText = "订单号123abc,金额456XYZ";
Pattern groupPattern = Pattern.compile(groupRegex);
Matcher groupMatcher = groupPattern.matcher(groupText);
System.out.println("原始文本: " + groupText);
System.out.println("正则表达式: " + groupRegex);
System.out.println("分组匹配结果:");
while (groupMatcher.find()) {
// group(0) 表示整个匹配的子串
// group(1) 表示第一个捕获组 (\\d+)
// group(2) 表示第二个捕获组 ([a-zA-Z]+)
System.out.println(" 完整匹配: " + groupMatcher.group(0));
System.out.println(" 数字部分: " + groupMatcher.group(1));
System.out.println(" 字母部分: " + groupMatcher.group(2));
}
System.out.println("\n--- 4. 替换操作 ---");
// 使用 matcher.replaceAll() 替换所有匹配项
String replaceText = "我的邮箱是test@example.com,备用邮箱是user@domain.org。";
String emailRegex = "\\w+@\\w+\\.\\w+"; // 一个简单的邮箱正则
Pattern replacePattern = Pattern.compile(emailRegex);
Matcher replaceMatcher = replacePattern.matcher(replaceText);
String replacedText = replaceMatcher.replaceAll("[已隐藏邮箱]");
System.out.println("原始文本: " + replaceText);
System.out.println("替换后文本: " + replacedText);
System.out.println("\n--- 5. 分割操作 ---");
// 使用 String.split() 根据正则表达式分割字符串
String splitText = "apple,banana;orange|grape";
String splitRegex = "[,;|]"; // 用逗号、分号或竖线分割
String[] fruits = splitText.split(splitRegex);
System.out.println("原始文本: " + splitText);
System.out.println("分割后的数组: " + java.util.Arrays.toString(fruits));
}
}
代码输出结果
--- 1. 基本匹配测试 ---
原始文本: 订单号123abc,金额456XYZ,备注:无
正则表达式: \d+[a-zA-Z]+
所有匹配项:
- 找到匹配: 123abc
- 找到匹配: 456XYZ
--- 2. 使用 String.matches() (整体匹配) ---
字符串 '123abc' 是否匹配 '\d+[a-zA-Z]+'? true
字符串 '123abc XYZ' 是否匹配 '\d+[a-zA-Z]+'? false
--- 3. 分组测试 ---
原始文本: 订单号123abc,金额456XYZ
正则表达式: (\d+)([a-zA-Z]+)
分组匹配结果:
完整匹配: 123abc
数字部分: 123
字母部分: abc
完整匹配: 456XYZ
数字部分: 456
字母部分: XYZ
--- 4. 替换操作 ---
原始文本: 我的邮箱是test@example.com,备用邮箱是user@domain.org。
替换后文本: 我的邮箱是[已隐藏邮箱],备用邮箱是[已隐藏邮箱]。
--- 5. 分割操作 ---
原始文本: apple,banana;orange|grape
分割后的数组: [apple, banana, orange, grape]
常用正则表达式速查表
| 用途 | 正则表达式 | 说明 |
|---|---|---|
| 数字 | ^\\d+$ |
匹配一个或多个整数 |
^[+-]?\\d+(\\.\\d+)?$ |
匹配可选正负号的整数或浮点数 | |
| 邮箱 | ^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$ |
一个较为通用的邮箱格式验证 |
| 手机号 | ^1[3-9]\\d{9}$ |
匹配中国大陆11位手机号号段 |
| URL | ^(https?:\\/\\/)?([\\da-z.-]+)\\.([a-z.]{2,6})([\\/\\w .-]*)*\\/?$ |
匹配常见的 HTTP/HTTPS URL |
| 日期 | ^\\d{4}-\\d{2}-\\d{2}$ |
匹配 YYYY-MM-DD 格式的日期 |
| 中文 | ^[\u4e00-\u9fa5]+$ |
匹配一个或多个中文字符 |
| 匹配行首/行尾 | ^abc |
匹配行首的 "abc" |
xyz$ |
匹配行尾的 "xyz" | |
| 特殊字符 | \\. |
匹配点号 (需要转义) |
\\[ |
匹配左方括号 [ (需要转义) |
|
\\$ |
匹配美元符号 (需要转义) |
希望这个工具和详细的说明能帮助您更好地使用 Java 正则表达式!
