在线正则表达式测试

输入正则与测试文本,实时查看匹配结果、捕获分组与替换后的文本。 所有计算都在浏览器本地完成,不上传任何内容。

正则表达式

等待输入
直接写正则主体即可,无需两侧的斜杠;也可以连斜杠一起粘贴。
匹配数量
0
首个位置
-
捕获分组
0
耗时
0 ms

匹配高亮

最多展示 500 处
匹配结果会在这里高亮显示。

匹配详情

替换结果

点击「执行替换」后显示结果。

读懂一条正则表达式

正则表达式是一段描述「字符串集合」的小程序。学会读它很划算, 因为手写的解析代码几乎总是更长、更易碎。读懂的关键是别把它当普通文字从左到右念, 而要拆成一个个被量词修饰的片段。

普通字符匹配自己,所以 2026 就匹配这串字面量。字符类匹配一组字符: \d 是任意数字,\w 是单词字符,\s 是空白, [a-f0-9] 则是自定义集合。量词说明前面的片段重复多少次: * 零次或多次,+ 一次或多次,? 可有可无,{2,4} 指定范围。 量词默认是贪婪的,会尽可能多吃字符,加一个 ? 变成惰性(.*?)就会尽可能少吃, 这是「匹配到了整行而不是想要的那一小段」的典型原因。

分组同时承担两件事:让量词作用于一整段((ab)+), 以及把匹配到的内容捕获下来供后面引用——本页的「捕获分组」面板显示的就是它, 替换框里的 $1 引用的也是它。如果只需要分组、不需要捕获, 在开头加 ?:((?:ab)+)即可,既省内存也让捕获编号更清晰。

标志决定引擎行为,多数「结果不对」都出在这里。没有 g 时正则只找第一个匹配就停下, 所以「明明有很多个却只匹配到一个」几乎都是漏了 g;i 忽略大小写; m 让 ^ / $ 匹配每行的首尾而不是整段文本的首尾; s 让 . 也能跨过换行;y 则要求从上一次的位置连续匹配。

需要警惕的是灾难性回溯:(a+)+ 这类嵌套量词遇到「差一点就能匹配」的长文本时, 引擎要尝试的分支数量会指数级膨胀,直接把标签页卡死。 如果某个正则在大文本上明显变慢,优先简化嵌套量词、加上锚点,或把任务拆成两遍。

本页直接使用浏览器自带的 JavaScript 正则引擎,你在页面上测到的行为就是代码里的行为, 不存在「服务器版正则」的差异;匹配、分组与替换全部在本地完成,文本不会上传。

常用正则速查

  • \d{4}-\d{2}-\d{2}:匹配日期;^1[3-9]\d{9}$:手机号。
  • [\w.+-]+@[\w-]+\.[\w.]+:邮箱;https?://\S+:URL。
  • ^[\u4e00-\u9fa5]+$:纯中文;\s+:连续空白。
  • 替换中 $& 为整段匹配,$1 / $2 为对应捕获分组。
  • 开启 g 后可执行全局替换;开启 m 后 ^ / $ 匹配每行首尾。