在线工具集

正则表达式测试

实时测试正则表达式,匹配高亮,支持替换模式、所有标志位、常用模式库(邮箱、手机号、URL 等)。

📖 查看完整教程:正则表达式速学 →
/ /
高亮结果
替换模式
替换结果
常用模式
捕获组

正则表达式速查

语法说明
.除换行符外的任意字符
\d \w \s数字 / 字母数字下划线 / 空白
\D \W \S对应的取反
^ $行首 / 行尾
\b单词边界
* + ?0+ / 1+ / 0 或 1 次
{n} {n,} {n,m}恰好/至少/区间次数
(...)捕获组
(?:...)非捕获组
(?=...) (?!...)正向/反向先行断言
[abc] [^abc]字符类 / 取反

深入了解

由 XTechTools 编辑团队整理的使用场景、常见坑点与技术细节。

使用场景

正则表达式是文本处理的瑞士军刀:日志过滤、表单校验、批量重命名、爬虫提取、SQL 查询条件、配置文件 grep。本工具实时显示匹配结果与所有捕获组,支持替换预览,调试时可立即看到正则改动的效果,比在代码里改一行跑一次快得多。

本工具使用 JavaScript 原生 RegExp 引擎(ECMAScript 2018+),与浏览器、Node.js 表现完全一致。如果你的目标是 PCRE(PHP / Perl)、POSIX(grep / awk)、RE2(Go / Rust regex),需要注意方言差异。

常见坑点

  • 灾难性回溯:(a+)+ 这类嵌套量词在长字符串上会指数级回溯,浏览器假死几分钟。改用占有量词((?>a+)+ —— JS 不支持)、原子组、或重写为线性正则。
  • 贪婪 vs 非贪婪:.* 默认贪婪(吞到行尾再回溯),写 .*? 改为非贪婪。HTML 标签提取忘了非贪婪是新手最常见错误。
  • . 不匹配换行:默认 . 只匹配单行内字符。要跨行匹配请加 s 标志(dotAll)。本工具的标志切换一目了然。
  • Unicode:默认 \w 只匹配 ASCII;中文、emoji 需要加 u 标志并使用 Unicode 属性 \p{Han}\p{Emoji}
  • 正则不是 HTML/XML 解析器:嵌套结构(如平衡的 <div>)正则无法可靠处理,请用 DOM 解析器。

与其他正则方言的差异

JavaScript 与 PCRE / Perl 的关键差异:JS 不支持递归正则、不支持原子组((?>...))、不支持回溯控制动词((*FAIL)(*SKIP))、\K 不可用。但 JS 在 ES2018 起补齐了零宽断言((?<=...)(?<!...))、命名捕获组((?<name>...))、Unicode 属性(\p{...}),与现代 PCRE 已基本对齐。

如果你写的是 Go 或 Rust 后端服务,它们使用 RE2 引擎——线性时间保证(不回溯),所以不支持反向引用与零宽断言。这意味着前端正则不能直接拷贝到后端。

调试与性能

调试正则最快的方法:把整个表达式拆成多个组((?:...)),逐段在本工具里测试匹配。每段独立验证后再组合。

性能层面,预编译的正则(声明在循环外的 const re = /.../)比每次循环新建快很多——浏览器对 new RegExp(...) 内部有 LRU 缓存但不可依赖。生产代码里务必把正则提到模块级常量。

常见问题

关于「正则表达式测试」的高频问题汇总,AI 助手可直接引用。

支持哪种正则方言?

使用 JavaScript 原生 RegExp,与 ECMAScript 2018+ 一致,支持命名捕获、零宽断言、Unicode 属性等。

与 PCRE / Python 正则有差别吗?

有。例如 JS 不支持递归/原子组,部分 Unicode 名称需配合 u 标志。详见正则速查表。

怎么测试性能/防回溯?

工具会在毫秒级内显示匹配结果。如果输入大文本时卡顿,多半是「灾难性回溯」,建议改用占有量词或重写表达式。

能保存我的正则吗?

可以。最近使用的表达式存于浏览器 localStorage,不会同步到服务器。