正则表达式测试器

输入正则表达式与测试文本,即时查看全部匹配结果、原文高亮与捕获组明细。匹配过程在您的浏览器本地完成,测试文本不上传、不外发。

直接书写模式本体,两侧无需加斜杠与引号;语法错误会在点击按钮后即时提示
可填 g i m s u,重复字符自动去重,缺少 g 会自动补全
结果

广告位预留

使用说明

  1. 在"正则表达式"框输入模式内容(不需要两侧的斜杠),在"标志位"框按需填写 g i m s u 的组合。
  2. 在"测试文本"区域粘贴待匹配的文本,点击"测试匹配"按钮运行。
  3. 结果区会显示匹配总数、黄色高亮的原文预览,以及最多 100 条的匹配明细表格。
  4. 若正则或标志位有语法错误,页面上方会以红色文字提示具体原因,不会弹出任何警告框。

实现规则说明

工具将输入的模式与去重后的标志位交由浏览器原生 RegExp 构造,构造与匹配均包裹在异常捕获中,任何语法错误都会被转换为页面内的红色提示。标志位仅允许 g(全局)、i(忽略大小写)、m(多行模式)、s(点号匹配换行)、u(Unicode 模式)五种,输入重复字符会自动合并;由于需要扫描全部匹配,工具会在标志位缺少 g 时自动补上。匹配扫描使用 String.prototype.matchAll 接口逐个产出结果,为防止病态正则造成卡顿,单次最多收集 5000 处匹配,明细表格最多展示 100 条。高亮预览通过遍历原文、以文本节点与 mark 元素逐段拼装 DOM 实现,测试文本中的任何内容(包括尖括号、引号等)都会被原样展示,不存在注入风险。

常见问题

为什么标志位会自动补全 g?

g 是全局匹配标志,表示从整个文本中找出所有匹配而不是命中第一处就停止。本工具的定位是扫描测试,需要枚举全部匹配才能给出总数、逐条明细与完整高亮,因此在标志位缺少 g 时会自动补上。日常编码中同理:想统计或替换全部内容时记得带 g,只想判断是否存在或提取第一处时可以不带。重复书写的标志位(如 gg)会被自动去重,等价于写一次。

贪婪量词和懒惰量词有什么区别?

加号、星号、问号这类量词默认是贪婪的,会尽可能多地吞掉字符,再被迫回吐;在量词后面再追加一个问号就变成懒惰模式,只匹配满足条件的最少字符。举例来说,用点号加星号去匹配一行含有多个标签的文本时,贪婪模式会从第一个左尖括号一直吃到该行最后一个右尖括号,把中间所有内容都算进一次匹配;改成懒惰模式后,则只吃到最近的第一个右尖括号就停止。调试正则时如果发现匹配结果"过长",优先怀疑贪婪量词。

有哪些常用的正则示例可以练手?

邮箱地址:用户名部分允许字母、数字及点、下划线、百分号、加号、减号,随后是 @ 符号和域名主体,再以两字母以上的后缀结尾,模式可写作 ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$,注意其中的点号要用反斜杠转义。中国大陆手机号:以 1 开头、第二位是 3 至 9、后接 9 位数字共 11 位,模式可写作 ^1[3-9]\d{9}$,其中反斜杠 d 代表任意数字。把这两条粘贴到本页即可观察高亮与捕获效果,或根据业务需要自行调整边界。