编辑器
等待输入或正则表达式执行…
操作
为何使用此正则表达式测试器
- 实时匹配,可选“实时”模式,边输入边重新运行
- 结构化匹配列表,包含起始索引、结束索引、值和命名捕获组
- 完整支持 JavaScript/ECMAScript RegExp 语法(与您的 JS 运行时引擎相同)
- 标志控制:g、i、m、s、u、y – 安全组合与实验
- 基础性能洞察,每次运行执行时间以毫秒计
- 纯文本摘要输出,便于快速复制/粘贴到工单、文档或提交信息中
- 极佳学习工具:无需运行完整项目或测试套件即可原型化模式
- 日常任务理想选择:日志解析、验证、URL/ID 提取、快速数据清理
- 结果列表软性限制,避免匹配大文本时界面冻结
🔧 如何使用正则表达式测试器 for regex-tester
1. 粘贴或输入测试文本
添加您要搜索的文本:日志、片段、CSV 片段、HTML、JSON 等任何纯文本内容。
2. 编写您的正则表达式模式
输入正则表达式**无需包围斜杠**。例如:基本电子邮件类模式使用 <code>\b\w+@\w+\.\w+</code>,或带命名分组的 <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code>。
3. 设置标志(g、i、m、s、u、y)
切换标志如 <code>g</code>(全局)、<code>i</code>(不区分大小写)或 <code>m</code>(多行)。底层实现与 JavaScript 完全相同,构建 <code>new RegExp(pattern, flags)</code>。
4. 检查匹配项与分组
查看每个匹配项及其索引、可选结束索引和捕获组。命名分组以类 JSON 映射形式显示,便于复制到测试夹具、解析器或文档中。
5. 复制摘要
使用文本摘要作为快速报告:列出带索引和分组的匹配项,可直接粘贴到工单、代码审查评论或备忘单中。
正则表达式语法与引擎详情
字符类与基础
JavaScript RegExp 引擎支持的核心构建块。
| 模式 | 含义 | 示例 |
|---|---|---|
| . | 除换行符外的任意字符(除非使用 <code>s</code> 标志) | <code>a.c</code> → 匹配 <code>abc</code> |
| \d, \w, \s | 数字、单词字符、空白字符 | <code>\d+</code> → <code>123</code> |
| \D, \W, \S | 上述字符的否定版本 | <code>\S+</code> → 非空白字符序列 |
| [abc] | 字符集合 | <code>[aeiou]</code> → 单个元音字母 |
| [^abc] | 否定集合 | <code>[^0-9]</code> → 非数字字符 |
| ^, $ | 输入(或带<code>m</code>标志时的行)开始与结束 | <code>^Hello</code>, <code>!$</code> |
量词
重复前一个标记,支持贪婪和懒惰匹配行为。
| 模式 | 含义 | 示例 |
|---|---|---|
| ? | 0次或1次 | <code>colou?r</code> → 匹配 <code>color</code> 和 <code>colour</code> |
| * | 0次或多次 | <code>a*b</code> → <code>b</code>, <code>aaab</code> |
| + | 1次或多次 | <code>\d+</code> → <code>1</code>, <code>123</code> |
| {n} | 恰好n次 | <code>a{3}</code> → <code>aaa</code> |
| {n,} | 至少n次 | <code>\d{3,}</code> → <code>123</code>, <code>1234</code> |
| {n,m} | n到m次之间 | <code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code> |
分组、环视与命名捕获
现代JavaScript引擎提供的更高级功能。
| 功能 | 语法 | 示例 |
|---|---|---|
| 捕获组 | (...) | <code>(\d{3})-(\d{2})</code> → 区号 + 后缀 |
| 非捕获组 | (?:...) | <code>(?:https?|ftp)://</code> |
| 反向引用 | \1, \2, ... | <code>(\w)\1</code> → <code>aa</code>, <code>bb</code> |
| 前瞻 | (?=...), (?!...) | <code>\w+(?=! )</code> → <code>! </code>前的单词 |
| 后顾* | (?<=...), (?<!...) | <code>(?<=#)\w+</code> → <code>#</code>后的文本(*在现代引擎中) |
| 命名组 | (?<name>...) | <code>(?<year>\d{4})</code> → 结果中的<code>groups.year</code> |
标志(选项)
测试器的标志直接映射到 JavaScript RegExp 标志。
| 标志 | 名称 | 效果 |
|---|---|---|
| g | 全局 | 查找所有匹配项而非仅第一个 |
| i | 忽略大小写 | 不区分大小写的匹配 |
| m | 多行 | <code>^</code> 和 <code>$</code> 匹配行边界 |
| s | 点号全匹配 | <code>.</code> 也匹配换行符 |
| u | Unicode | 在现代引擎中启用 Unicode 模式和属性转义 |
| y | 粘性 | 仅在当前索引处匹配(与<code>lastIndex</code>配合使用) |
性能与安全
底层的JavaScript引擎同步执行正则表达式。为保持用户界面响应,测试器限制了收集的匹配数量(例如全局模式下的前500次命中)。这有助于避免界面过载,但不能替代对复杂或关键模式进行的完整性能审核。
命令行正则表达式工具
一旦您的模式在此处生效,您可以在终端、脚本或CI作业中重用相同或类似的正则表达式:
Linux / macOS
使用grep搜索(扩展正则表达式)
grep -E 'pattern' file.txt查找匹配给定模式的行
使用sed搜索并替换
sed -E 's/pattern/replacement/g' input.txt > output.txt在文本文件中进行批量替换
Windows / PowerShell
PowerShell正则表达式搜索
Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txt在日志文件中查找美式社会安全号码模式(示例)
PowerShell正则表达式替换
(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txt基于正则表达式的简单替换
实用正则表达式应用
网页与前端开发
- 在表单中验证电子邮件、用户名、别名或自定义ID
- 从URL或路径中提取路由参数
- 快速为客户端验证原型化模式
// 基础电子邮件验证
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);// 路由参数:/post/123
const match = pathname.match(/^\/post\/(\d+)/);日志、数据与后端
- 从日志行中解析时间戳和级别
- 规范化空白字符并清理混乱文本
- 从非结构化内容中提取ID、电子邮件或引用
// 压缩重复空白字符
const normalized = text.replace(/\s+/g, ' ').trim();// 简单日志行匹配器
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);数据清理与快速脚本
- 在解析前去除不需要的HTML标签或属性
- 从长文本块中提取所有URL、电子邮件或ID
- 准备数据集字段以便导入到其他系统
❓ Frequently Asked Questions
❓为什么我的正则表达式没有匹配到任何内容?
.、?、+),2)期望多个匹配时忘记g标志,3)缺少锚点(^、$)或单词边界(\b),4)使用了JavaScript引擎尚不支持的功能(如某些后顾断言)。尝试简化模式并逐步添加组件。⏱️执行时间(毫秒)是什么意思?
performance.now()计时。该值是对正则表达式在当前输入上执行所需时间的粗略单次测量。它有助于发现明显耗时的模式,但并非完整的基准测试,也不能保证生产环境性能。🔍首次匹配模式和全局模式有什么区别?
g标志时,JavaScript仅返回**第一个**匹配(如果有)。使用g标志时,测试器通过input.matchAll()收集**所有**匹配(限制在安全最大值内),包括索引和捕获组。当您关心多个匹配项时请使用全局模式。🌍是否支持Unicode和<code>\p{...}</code>转义?
u标志进入Unicode模式,可在现代浏览器和近期Node.js版本中使用\p{Letter}或\p{Script=Greek}等功能。⚠️能否检测到灾难性回溯?
Pro Tips
分小块构建正则表达式。从简单的匹配开始,然后逐步添加锚点、分组和量词。
尽可能使用命名捕获组(<code>(?<name>...)</code>)。它们使匹配结果自文档化,在代码审查时更易阅读。
谨慎使用<code>.*</code>和嵌套量词。它们可能在大输入量时导致严重回溯。使模式更具体或使用<code>{n,m}</code>限制重复次数。
调试时,临时移除<code>g</code>标志并专注于第一个匹配以简化思维模型。
Additional Resources
Other Tools
- CSS 美化器
- HTML 美化器
- JavaScript 美化器
- PHP 美化器
- 颜色选择器
- 精灵图提取器
- Base64 解码器
- Base64 编码器
- C# 格式化器
- CSV 格式化器
- Dockerfile Formatter
- Elm 格式化器
- ENV 格式化器
- Go 格式化器
- GraphQL 格式化器
- HCL 格式化器
- INI 格式化器
- JSON 格式化器
- LaTeX 格式化器
- Markdown 格式化器
- Objective-C 格式化器
- Php Formatter
- Proto 格式化器
- Python 格式化器
- Ruby 格式化器
- Rust 格式化器
- Scala 格式化器
- Shell 脚本格式化器
- SQL 格式化器
- SVG 格式化工具
- Swift 格式化工具
- TOML 格式化工具
- Typescript Formatter
- XML 格式化工具
- YAML 格式化工具
- Yarn 格式化工具
- CSS 压缩器
- Html Minifier
- Javascript Minifier
- JSON 压缩器
- XML 压缩器
- HTTP 头部查看器
- PDF 转文本
- 搜索引擎排名检查器
- Whois 查询