正则表达式测试 — JS/PCRE实时匹配与捕获组调试工具
在线正则测试器,实时匹配高亮与捕获组可视化表格。支持 g/i/m/s/u 标志切换、替换测试和常用正则库。浏览器本地运行。
功能特性
- ✓实时匹配高亮——输入模式或测试字符串时匹配结果立即高亮显示
- ✓捕获组可视化——所有编号和命名分组以结构化表格展示其匹配内容
- ✓详细匹配信息——每个匹配显示精确位置(索引)、长度和完整匹配文本
- ✓正则标志切换——一键切换全局(g)、忽略大小写(i)、多行(m)、单行(s)、Unicode(u) 模式
- ✓替换测试模式——测试替换模式中的 $1、$2 反向引用,实时查看替换结果
- ✓常用正则库——一键加载预置模式:邮箱、URL、手机号、IP 地址、日期、密码验证等
- ✓语法错误检测——正则无效时显示清晰易懂的错误提示信息
- ✓匹配统计——总匹配数、捕获组数和处理时间显示在状态栏
- ✓一键复制模式或匹配结果到剪贴板,方便与团队成员分享
- ✓完全兼容 JavaScript RegExp 引擎——使用浏览器原生引擎,结果与生产代码完全一致
- ✓纯客户端处理——零数据传输,断网可用,适合处理密码、PII 等敏感数据
使用方法
- 1在顶部「正则表达式」输入框中输入你的模式。可以使用斜杠格式(/pattern/)或直接输入原始模式(不含分隔符)。
- 2切换标志按钮:g(全局——查找所有匹配)、i(忽略大小写)、m(多行——^$ 匹配行边界)、s(单行——点号匹配换行符)、u(Unicode 完整支持)。
- 3在下方输入区域粘贴或输入测试字符串。输入时自动高亮显示匹配内容。
- 4在右侧面板查看详细匹配信息:每个匹配的位置、长度、捕获组和完整文本。
- 5切换到「替换」模式测试替换操作。输入包含 $1、$2 引用的替换字符串来使用捕获组。
- 6点击「常用模式」库中的预设快速加载常用正则,如邮箱验证或 URL 匹配。
- 7使用工具栏按钮复制模式或结果。需要时可下载匹配结果为文本文件。
- 8查看正则解释区域了解每个模式片段的含义,帮助学习正则语法。
常见问题
什么是正则表达式?
∨
正则表达式(regex 或 regexp)是定义搜索模式的字符序列。用于基于模式规则查找、替换、验证和提取文本。例如 `\d{3}-\d{4}` 匹配如 "555-1234" 的电话号码格式。几乎所有编程语言(JavaScript、Python、Java、PHP、Go)和文本编辑器(VS Code、Sublime Text)都支持正则。本工具使用 JavaScript 原生 RegExp 引擎,结果与你的 JS 代码完全一致。
正则标志是什么意思?
∨
标志修改正则引擎的行为方式:
• **g (全局)**:查找所有匹配,而不是找到第一个就停止
• **i (忽略大小写)**:大小写字母互换匹配 —— /hello/i 可以匹配 "Hello"、"HELLO"、"hello"
• **m (多行模式)**:让 ^ 和 $ 匹配每行的开头/结尾,而非整个字符串
• **s (单行/dotAll)**:让点号(.)也能匹配换行符
• **u (Unicode)**:启用完整 Unicode 支持,包括表情符号、中日韩文字和 Unicode 属性转义如 \p{Script=Han}
捕获组是如何工作的?
∨
捕获组是用括号(...)括起来的正则部分,用于提取每个匹配的特定片段。例如 `(\d{3})-(\d{4})` 对 "555-1234" 创建两个组:第1组="555",第2组="1234"。可以用 `(?<name>...)` 语法命名分组以便引用:`(?<area>\d{3})-(?<number>\d{4})`。在替换字符串中用 $1、$2(编号)或 $<name>(命名)引用组。非捕获组 `(?:...)` 只分组不捕获——当你需要分组逻辑但不需要提取值时使用。
为什么我的正则显示为无效?
∨
常见导致正则无效的原因:未转义的特殊字符(用 \\ 表示字面反斜杠,\. 表示字面点号)、括号不匹配(每个开括号(都要有对应的闭括号))、无效量词位置(不能在不存在的组后面放 +),或不支持的 JavaScript 语法(反向断言要求固定宽度,不支持递归模式)。错误消息会精确显示解析失败的位置——寻找红色错误指示器附近的问题字符。建议:从简单开始,逐步增加复杂度,每次修改后都测试。
支持 PCRE 或 Python 正则吗?
∨
本工具使用 JavaScript 原生 RegExp 引擎(ECMAScript 标准)。覆盖大多数跨语言共用的正则语法:字符类(\d、\w、\s)、量词(*、+、?、{n,m})、锚点(^、$、\b)、前瞻断言((?=...)、(?!...))和命名捕获组。但某些功能有差异:Python 的递归((?R))不可用,PCRE 的条件模式((?ifthen|else))不工作,占有量词(x++ JS 2024+)支持有限。针对特定语言测试时,请将工具输出与目标运行时对比——原生引擎确保 JavaScript/TypeScript 项目的准确性。
我的测试数据会被发送到服务器吗?
∨
不会。所有正则匹配、高亮和处理完全在浏览器中使用 JavaScript 内置的 RegExp 对象完成。你的模式、测试字符串和匹配结果永远不会离开设备——没有后端服务器、没有 API 调用、没有数据收集。页面加载后甚至可以断网继续完美运行。这使得用它测试密码、API 密钥、个人信息或机密日志等敏感数据是安全的。
替换模式如何工作?
∨
在替换模式下,你提供使用特殊语法引用捕获组的替换字符串:
• `$&` 或 `$0` —— 整个匹配
• `$1`、`$2`、`$3` —— 编号捕获组(从1开始)
• `$<name>` —— 命名捕获组(ES2018+)
• `` $` `` —— 匹配之前的所有内容
• `$'` —— 匹配之后的所有内容
• `$$` —— 字面美元符号
例如,模式 `(\w+)@(\w+)` 配合替换字符串 `$2@$1` 会交换每个 @ 符号两侧的部分。在部署到生产环境前在此测试复杂替换。
能测试正则性能或检测灾难性回溯吗?
∨
工具显示每次匹配操作的耗时。如果发现某些输入出现极端延迟(秒级而非毫秒级),可能遇到了灾难性回溯——正则引擎在失败前探索指数级可能性的情况。常见触发因素:嵌套量词如 `(a+)+`、重叠分支、可选组上的量词。诊断方法:简化模式、使用原子组或占有量词(如果可用)、重构以避免歧义分支。实时反馈帮助在生产环境遇到问题前发现性能问题。
贪婪量词和懒惰量词有什么区别?
∨
贪婪量词(*、+、{n,})尽可能多地匹配。懒惰量词(*?、+?、{n,}?)尽可能少地匹配。例如 'abc123':/\w+\d+/ 匹配 'abc123'(贪婪,吃掉所有);而 /\w+?\d+/ 匹配 'abc1'(懒惰,在 \d+ 前取最少)。使用懒惰量词避免匹配过多内容。
如何用正则匹配包括表情符号在内的 Unicode 字符?
∨
使用 'u'(Unicode)标志和 Unicode 属性转义。例如:\p{Emoji} 匹配任何表情符号,\p{Script=Han} 匹配汉字,\p{L} 匹配任何 Unicode 字母。没有 'u' 标志时,\d 和 \w 只匹配 ASCII 字符。启用 'u' 标志后它们匹配完整的 Unicode。
相关工具
Base64编码解码 — 在线字符串编码解码转换器
Base64 编码解码器,实时自动检测输入内容。支持 UTF-8 字符包括 emoji 和中文,拖拽选择,一键复制和保存结果。
URL编码解码 — 百分号编码与解码在线工具
URL 编解码器,将文本编码为 URL 安全的百分号格式或解码回可读文本。支持 UTF-8 字符包括 emoji 和中文。
JSON格式化 — 美化、验证与压缩在线工具
JSON 格式化工具,一键格式化、压缩、语法高亮和树形视图。支持键名排序、自定义缩进、行号显示、错误定位。浏览器本地运行。
JWT解码器 — 解析、验证与调试 Web 令牌
JWT 解码器,即时解码 JSON Web Token 查看头部、负载和签名。检查声明字段,检测过期、弱算法和 alg:none 安全问题。
哈希计算器 — MD5/SHA-256/SHA3等25+算法
25 种哈希算法:MD5、SHA-256、SHA-512、SHA3、BLAKE3、SM3 等。支持 HMAC、校验比对。浏览器本地计算。