正则表达式测试
填写正则表达式和测试文本,点“测试”,高亮所有匹配并列出每个分组。文字只在你的浏览器里处理,不会上传。
使用限制
- 只代表浏览器的 JavaScript 正则。写给 PCRE、Python、Java、Go 的表达式(例如
(?i)内联标志、\A、\Z、占有量词、递归)在这里可能报错或行为不同。 - 防卡死:正则在后台线程运行,超过 3 秒会被强制中止并提示“可能发生了灾难性回溯”,页面不会卡住。典型的危险写法如
(a+)+$遇到一长串 a 后面跟一个别的字符。 - 后行断言
(?<=…)、命名分组、\p{…}需要较新的浏览器;浏览器不支持时会提示,而不是给出错误结果。 - 最多计算前 10 万处匹配,表格和高亮只显示前 1000 处。
- 内置的“常用格式示例”只检查写法,不保证号码段、域名、网址真实存在,也不随规则变化更新。
注意:结果完全遵循你当前浏览器的 JavaScript(ECMAScript)正则引擎。它和 PCRE、Python、Java、Go、grep 等的语法与行为有差别,在这里测通过的表达式放到别的语言里不一定一样。
匹配高亮
匹配列表
| 序号 | 位置(从 0 起) | 匹配内容 | 分组 |
|---|
使用方法
- 填写正则表达式(直接写内容,不要加两边的斜杠),按需勾选标志,在“测试文本”里粘贴要匹配的文字。
- 点“测试”。匹配到的部分会高亮,下面的表格列出每次匹配的位置、内容、编号分组和命名分组;没有参与匹配的分组显示为“未参与”。
- 勾选“同时预览替换结果”,填写替换内容,可以使用
$1、$<名称>、$&引用分组和整个匹配。不勾选 g 时只替换第一处。 - 想快速试试,可以从“常用格式示例”里选一个。
常见问题
为什么我的正则在别的语言里结果不一样?
不同语言的正则引擎不同:换行、Unicode、大小写、分组语法、后行断言的限制都有差别。本工具用的是你浏览器内置的 JavaScript 引擎,只能代表 JavaScript。
提示“可能发生了灾难性回溯”是什么意思?
有些写法(嵌套的重复,如 (a+)+$)在匹配失败时需要尝试指数级的路径,耗时可能以分钟甚至小时计。本工具在 3 秒后中止运行。可以改成不嵌套的写法,或者用更具体的字符组代替 .*。
g、u、v 这些标志是什么?
g 找出全部匹配而不是只找第一个;i 忽略大小写;m 让 ^ 和 $ 匹配每一行的开头结尾;s 让点号也匹配换行;u 开启 Unicode 模式(处理 emoji 和 \p{…});v 是更新的 Unicode 集合模式,不能和 u 同时用;y 粘连模式;d 额外返回下标。
我的文字会被上传吗?
不会,正则在你的浏览器里运行。