首页 开发者工具 正则表达式测试器

正则表达式测试器

实时匹配高亮、常用模板库、分组替换

正则表达式
测试文本
输入正则表达式开始测试...
替换功能
常用正则模板
正则语法速查

🏷️ 相关标签

正则开发者工具隐私安全纯前端在线工具免费开发工具

什么是正则表达式测试器?

正则表达式(Regular Expression,简称 Regex)测试器是一款帮助开发者编写、测试和调试正则表达式的在线工具。正则表达式是文本处理的强大工具,用于在字符串中匹配、搜索、替换和提取符合特定模式的内容。从简单的邮箱验证到复杂的日志解析,正则表达式在编程中无处不在。然而,正则表达式的语法复杂且容易出错,一个小小的括号遗漏或贪婪/非贪婪修饰符的误用就可能导致匹配失败或灾难性回溯。本工具提供实时匹配高亮、捕获组展示、匹配详情(起始位置、匹配内容)以及常用正则表达式模板库,帮助开发者快速构建正确的正则表达式。

如何使用正则表达式测试器

  1. 步骤一:输入正则表达式 — 在模式输入框中输入正则表达式(不需要包裹斜杠),选择匹配标志(g 全局匹配、i 忽略大小写、m 多行模式、s 点号匹配换行符等)。
  2. 步骤二:输入测试文本 — 在测试文本区域输入需要匹配的样本数据。工具会实时高亮显示所有匹配结果,不同捕获组使用不同颜色标记。
  3. 步骤三:分析匹配结果 — 下方结果面板展示每个匹配的详细信息:完整匹配内容、各捕获组的值、匹配在文本中的起止位置。利用这些信息调试和修正正则表达式。

常见使用场景

场景一:表单输入验证

验证用户输入的邮箱、手机号、身份证号、URL 等格式是否正确。使用正则表达式测试器可以快速验证正则规则能否正确匹配目标格式,同时确保不会误匹配非法输入。

场景二:日志文件解析

从服务器日志中提取 IP 地址、请求路径、状态码、时间戳等字段。例如用正则从 Apache 日志行中捕获各字段:IP、时间、请求方法、URL、状态码、响应大小。先在测试器中用示例日志行验证正则,再应用到代码中。

场景三:文本批量替换和提取

使用正则表达式从大段文本中提取特定模式的内容,如提取所有 @提及 的用户名、#话题标签、URL 链接等。或者用捕获组和替换模板完成复杂的文本格式转换。

技术原理

正则表达式引擎基于有限状态自动机(NFA/DFA)。NFA(非确定有限自动机)支持回溯,功能强大但可能在复杂模式下产生灾难性回溯(catastrophic backtracking)。JavaScript 使用 NFA 引擎。RegExp 对象的 exec() 方法返回包含匹配信息和捕获组的数组,test() 方法返回布尔值。命名捕获组 (?<name>pattern) 让匹配结果更具可读性。

// 邮箱验证正则表达式
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

// 日志解析 - 命名捕获组
const logRegex = /^(?<ip>\d+\.\d+\.\d+\.\d+)\s-\s-\s\[(?<time>.+?)\]\s"(?<method>\w+)\s(?<url>.+?)\s.+?"\s(?<status>\d+)\s(?<size>\d+)/;
const match = logRegex.exec(logLine);
console.log(match.groups.ip);     // "192.168.1.1"
console.log(match.groups.status); // "200"

// 注意:避免灾难性回溯
// 错误: (a+)+b 对 "aaaaaaaaac" 会产生指数级回溯
// 正确: a+b 或使用占有量词/原子组

最佳实践与注意事项

常见问题

Q:贪婪匹配和非贪婪匹配有什么区别?

A>贪婪匹配(*、+、?、{n,m})会尽可能多地匹配字符;非贪婪匹配(*?、+?、??、{n,m}?)会尽可能少地匹配。例如对 "a]b]c" 用 a.+] 匹配得到 "a]b]"(贪婪到最后一个 ]),用 a.+?] 匹配得到 "a]b"(只到第一个 ])。

Q:什么是"灾难性回溯"?如何避免?

A>当正则中存在嵌套量词或交替组合时,引擎可能对某些输入产生指数级的回溯尝试,导致 CPU 卡死。例如 (a+)+b 匹配 "aaaaaaaaac"。避免方法:消除嵌套量词、使用原子组 (?>...)(JS 尚不支持)、或重构正则为确定形式。

Q:JavaScript 正则和其他语言有什么区别?

A>JavaScript 使用 NFA 引擎,支持回溯。ES2018 新增了命名捕获组、后行断言。但 JS 不支持原子组、占有量词、递归匹配等高级特性。如果需要更强大的正则,可使用 XRegExp 库。正则语法在 Perl、Python、Java 等语言间也有细微差异。

Q:如何匹配中文字符?

A>使用 Unicode 范围 [一-鿿] 匹配基本汉字。如需包含扩展区,范围更广。ES2018 的 Unicode 属性转义 \p{Script=Han} 配合 u 标志可以更精确地匹配中文字符。

Q:如何测试正则表达式的性能?

A>使用本工具的匹配详情面板查看回溯次数。也可以使用 console.time() 测量执行时间。更专业的工具如 regex101.com 会显示每一步的回溯过程。对于生产环境的正则,建议用 benchmark.js 进行压力测试。

🔥 同类热门工具

💳
信用卡号验证器
信用卡号验证器 - Luhn算法验证,识别Visa/Mast...
🛠️
Cron表达式生成器
在线Cron表达式生成器,可视化构建5段和6位Cron表达式...
🛠️
CSS边框生成器
在线CSS边框生成器,可视化设计边框样式、宽度、颜色、圆角,...
🔘
CSS 圆角生成器
CSS 圆角生成器 - 可视化拖拽四角圆角,支持预设形状,一...
🎨
CSS 压缩器
免费在线CSS压缩器,一键压缩CSS代码,移除空白、注释和优...
🛠️
CSS阴影生成器
CSS Shadow Generator - Create ...
🎯
CSS 校验器
免费的在线CSS校验器,支持语法检查、属性值验证、常见错误提...
🌐
CURL命令生成器
在线CURL命令生成器,可视化设置请求方法、Headers、...
📅
日期计算器
日期计算器,计算两个日期间的天数差、周数差、月数差,以及推算...
📅
日期差计算器
日期差计算器,计算两个日期之间的天数、周数、月数,支持工作日...