Contact alice@example.com or bob@test.org for details, or admin@site.io
alice@example.com@ 8–25aliceexample.combob@test.org@ 29–41bobtest.orgadmin@site.io@ 58–71adminsite.io关于 正则表达式测试器
正则表达式测试工具基于浏览器原生 RegExp 引擎,提供实时匹配高亮和分组捕获结果展示。支持 JavaScript 正则的全部标志位:g 全局匹配、i 忽略大小写、m 多行模式、s 点号匹配换行、u Unicode 模式和 y 粘性匹配。输入正则和测试文本后即时显示匹配结果、匹配数量和每个捕获组的内容,方便调试复杂的正则模式。适用于表单验证规则编写(邮箱、手机号、URL)、日志解析模式调试和文本提取规则测试。支持查看正则表达式的可视化解释(每个 token 的含义说明),帮助理解复杂模式的匹配逻辑和优先级。例如用 ^[a-z0-9]+$ 测试字符串,立刻高亮所有匹配并显示捕获组与替换预览,无需来回切换工具。
使用方法
- 打开正则测试工具
- 在「正则」输入框中输入正则表达式
- 在「测试文本」区域输入要匹配的文本
- 查看高亮匹配结果和匹配列表
- 使用替换模式进行文本替换
使用场景
- 验证表单输入 — 调试邮箱、手机号、URL、密码强度等校验正则。
- 日志提取 — 从大段日志里抓取时间戳、错误码、IP 地址等字段。
- 批量替换 — 配合编辑器的"正则替换"功能,调好正则再批量改代码。
- 爬虫数据清洗 — 从抓取的 HTML 里提取价格、标题、评分等结构化数据。
- 学习语法 — 一边改正则一边看高亮结果,比看文档学得快。
常见问题
本工具用的是哪个正则方言?
JavaScript / ECMAScript 方言(PCRE 的子集)。常见差异:不支持反向引用 \g、原子组 (?>)、平衡组等高级特性。Python re 模块的语法绝大部分通用。
为什么我的正则匹配不到?
最常见原因:(1) 漏了 g 标志只匹配第一个;(2) 特殊字符 . * ? + 没转义;(3) 多行文本用了 ^/$ 但没加 m 标志。
正则会不会有性能问题?
会。嵌套量词(如 (a+)+)配上失败匹配会触发"灾难性回溯",导致页面卡死。本工具用浏览器原生引擎,超时会自动中断。
想测试 grep 或 sed 的正则怎么办?
它们用 BRE/ERE 方言,部分元字符需要转义(如 \(\))。本工具不完全兼容,复杂场景建议直接在终端测试。
怎么记住常用正则?
可以参考本站的「正则速查」工具,里面整理了邮箱、URL、IP、信用卡等常用模式。
为什么 ? 号匹配到的不是我想要的字符?
问号在正则里有两种含义:单独跟在字符后面表示「前面的字符出现 0 或 1 次」(如 colou?r 同时匹配 color 和 colour),跟在量词 * + ? 后面则表示「非贪婪」,让匹配尽量短。如果你想要的其实是「可选的整段字符」,直接用 ? 往往作用范围不对。正确做法是先把要变成可选的字符串包进分组,如 (https?://)?,若不想捕获该分组就用非捕获分组 (?:...)?。把它套在括号外再测,就只会影响括号内的整段,而不是紧邻的单个字符。
为什么 . 匹配不到换行符?
默认情况下点号 . 匹配除换行符之外的任意字符,所以遇到多行文本、. 会在一行结束时停下。解决方式有三种:给正则加 s 标志(单行模式),让 . 也能匹配换行;或者改用 [\s\S] 来同时匹配空白和非空白;也可以显式写 [^\n] 但这样仍不含换行。若是要跨多行匹配「块」,推荐 s 标志配合 .*? 非贪婪使用,先在「测试文本」里放入真实的多行日志再确认结果。