跳到正文
马克工具箱

正则表达式测试

编写正则表达式,输入时实时高亮每一处匹配,查看捕获分组并试验替换结果。使用 JavaScript 正则引擎;执行时间过长的表达式会被自动中止,不会卡住页面。

在浏览器本地运行,输入的内容和文件都不会上传

//g
常用正则:
 
Contact: ada@example.com, grace.hopper@navy.mil
Servers: 10.0.0.1, 192.168.1.255
Date: 2026-09-26

使用步骤

  1. 在两个斜杠之间输入表达式,或从常用正则中选一个作为起点。
  2. 切换 g、i、m、s、u、y 修饰符,改变匹配方式。
  3. 粘贴测试文本,匹配结果会被高亮,并列出位置和分组。
  4. 在「替换为」中输入 $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 中运行,测试用的日志和数据都留在你的设备上。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具