EN
首页 分类 正则表达式测试

正则表达式测试

正则表达式测试在线工具,实时匹配高亮与语法错误提示,支持 g/i/m/s/u 修饰符、分组捕获显示、常用正则示例,本地处理不上传,程序员必备

常见问题

修饰符 g、i、m、s、u 分别是什么意思?

g 全局匹配、i 忽略大小写、m 让 ^ 和 $ 匹配每行首尾、s 让点号也能匹配换行、u 启用 Unicode 模式。

怎么取出分组捕获的内容?

匹配列表里会显示每个匹配项的分组,点开即可看到第 1、2 组捕获到的文本。

贪婪和懒惰怎么控制?

默认贪婪(尽量多匹配),在量词后加问号变成懒惰(尽量少匹配),例如 .*? 比 .* 更早停下。

为什么匹配数停在 5000、高亮停在 2000?

这是为了防止大文本把页面卡死:匹配列表最多统计 5000 处、高亮最多标 2000 处,达到上限时状态栏会明确提示。真实数量请用代码里的 matchAll 再确认一次。

关于这个工具

引擎是浏览器里的 JavaScript RegExp(ECMAScript 语法),不是 PCRE、Java 或 Python 的实现。这一点决定了它支持什么:命名分组 (?<name>...)、后行断言、Unicode 属性转义 \p{Script=Han}(需勾 u)都能用;原子组 (?>...)、递归 (?R)、内联修饰符 (?i) 都不支持 —— 从别的语言照搬正则时,先在这类语法上排除原因。

「明明应该匹配却匹配不到」按这个顺序排查,能解决大部分问题:

  • 粘进来的正则带了斜杠:/\d+/g 里的两个 / 在输入框里会被当成字面量字符,于是永远匹配不到。这里要填的是不含分隔符的纯表达式。
  • 点号不匹配换行:跨行的段落要用 [\s\S]*? 或勾上 s。
  • 锚点只认整段首尾:想逐行匹配要勾 m,否则 ^ 只在全文开头生效。
  • 字符类太窄:\d 只匹配 ASCII 0-9,全角「123」和中文数字都不匹配;\w 只含 ASCII 字母数字下划线,汉字要写 [\u4e00-\u9fa5] 或用 \p{Script=Han}(必须勾 u)。
  • 贪婪吞掉了后半段:.* 会吃到行尾,需要精确边界时换成 .*? 或写出明确的结束条件。

列表里的「位置」是 UTF-16 码元偏移,不是第几个字符:如果匹配点前面有 emoji 或扩展 B 区汉字(各占 2 个码元),位置值会比肉眼数出来的更大,用它切字符串时要对应同一套坐标。

为了不让大文本把页面卡死,匹配最多统计 5000 处、高亮最多标出 2000 处,触顶时状态栏会写明;真实总数请回到代码里用 matchAll 复核。分组捕获只显示括号里的内容,未参与匹配的分组显示为空字符串,命名分组的名字不会出现在表格里。