使用步骤
- 在两个斜杠之间输入表达式,或从常用正则中选一个作为起点。
- 切换 g、i、m、s、u、y 修饰符,改变匹配方式。
- 粘贴测试文本,匹配结果会被高亮,并列出位置和分组。
- 在「替换为」中输入 $1 或 $<name> 等,预览查找替换的结果。
参数说明
- g(全局)
- 查找所有匹配而不是只找第一个。下方列表始终显示全部匹配;g 影响替换结果。
- i(忽略大小写)
- 字母匹配时不区分大小写。
- m(多行)
- ^ 和 $ 匹配每一行的开头和结尾,而不是整段文本。
- s(点匹配换行)
- 让 . 也能匹配换行符。
- u(Unicode)
- 按 Unicode 码点处理,支持 \p{…} 属性转义,能正确处理 emoji 和生僻字。
- y(粘连)
- 只在上一次匹配结束的位置继续匹配。
常用语法速查
| 语法 | 匹配 |
|---|---|
\d \w \s |
数字、单词字符、空白 |
[abc] [^abc] [a-z] |
其中之一、不在其中、范围 |
* + ? {2,5} |
0 次以上、1 次以上、0 或 1 次、2 到 5 次 |
*? +? |
非贪婪,尽可能少地匹配 |
^ $ \b |
开头、结尾、单词边界 |
(…) (?:…) (?<name>…) |
捕获分组、非捕获分组、命名分组 |
(?=…) (?!…) (?<=…) (?<!…) |
先行断言、否定先行、后行断言、否定后行 |
[一-鿿] \p{Script=Han} |
汉字(后者需 u 修饰符) |
示例
表达式 (?<!\d)1[3-9]\d{9}(?!\d) 可以从文本中提取 11 位手机号,并且不会误匹配更长数字串中的一段。
常见问题
这里用的是哪种正则语法?
浏览器实现的 JavaScript(ECMAScript 2024)正则。大部分语法与 PCRE、Python、Java 相同,但后行断言、命名分组、Unicode 转义在各引擎之间略有差异,最终请在你实际使用的语言里再验证一次。
为什么提示表达式被中止?
像 (a+)+$ 这样的表达式在一长串 a 上会让引擎尝试指数级的组合,这叫灾难性回溯。本工具在后台线程运行正则,超过 1.5 秒就会中止。请改写嵌套量词,或使用更精确的字符类。
替换时怎么引用分组?
$1、$2… 引用编号分组,$<name> 引用命名分组,$& 表示整个匹配,$$ 表示美元符号本身。
测试的文本会被上传吗?
不会。正则在浏览器的 Web Worker 中运行,测试用的日志和数据都留在你的设备上。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。