标志(flags)说明
| 标志 | 含义 |
|---|---|
g | 全局匹配,找出所有结果而非只找第一个(本工具默认加上) |
i | 忽略大小写 |
m | 多行模式,^ 与 $ 匹配每行的开头与结尾 |
s | 点号 . 也匹配换行符 |
u | Unicode 模式,按码点处理,适合中文与 emoji |
注意:JavaScript 的正则与 PCRE、Python re 存在差异,例如没有 (?<name>) 之外的某些高级语法、\d 默认不匹配全角数字。跨语言移植时请以目标语言的实测为准。
常见问题
为什么会「卡住」或匹配为空?
像 a* 这类可以匹配空字符串的表达式,会对每个位置产生一次零长度匹配。工具已对零长度匹配做前进保护,不会死循环;若结果过多,会截断到 2 万条。
捕获分组和整体匹配有什么区别?
整体匹配($0)是整段命中的文本;圆括号包起来的部分是捕获分组($1、$2…)。(?:…) 是「非捕获分组」,只分组不单独抓取。
文本会被上传吗?
不会。匹配由浏览器原生正则引擎在本地完成,页面没有任何网络请求。
怎么用
- 输入正则表达式,按需勾选全局、忽略大小写等开关
- 在文本框里粘贴要处理的内容
- 查看高亮结果和下方的匹配列表
- 修改正则后观察列表变化,确认捕获分组的取值
适用场景
- 写表单校验规则前,先拿几组手机号样本试匹配
- 从一堆日志里提取带时间戳的行
- 批量替换前先确认正则不会误伤正常内容
- 学习正则时直观理解分组和量词的作用
注意事项
- 支持 g、i、m、s、y 等标志,勾选与否结果可能完全不同,换环境前记得核对
- 嵌套量词容易引发回溯爆炸,表现为页面卡住或长时间不出结果,把 .* 拆开写更稳
- 待测文本只在浏览器本地匹配,不会上传到任何服务器
- 捕获分组按左括号出现顺序编号,非捕获组不占编号,引用分组时别数错
- 零宽断言和空匹配会列出大量位置,看着像没结果其实是匹配到了空字符串