cv.cm
全部教程

文字

怎么测试正则表达式

你在为代码、搜索框或表格写一个模式,想在用之前先看它匹配到什么。输入模式、粘贴样本文本,读出每一处匹配。\b\w+@\w+\.\w+\b 能找出简单的邮箱地址。什么都不离开这个标签页。

约 6 分钟阅读

今天的结果 匹配的数量、每处匹配的位置和捕获组,以及可选的替换预览,用的是 JavaScript 正则。

准备几行真实文本再打开正则测试,其中要有不该匹配的行。它用的是 JavaScript 风格,和浏览器、Node.js 一样。不上传。

打开正则测试
目录
  1. 先懂基本符号

    \d 是数字,\w 是字母、数字或下划线,\s 是空白,. 是任意字符。+ 表示一个或多个,* 表示零个或多个,? 表示可有可无。( ) 捕获一组;\b 是单词边界。

    \d 数字,\w 单词字符,\s 空白,+ 一个或多个,( ) 捕获组,\b 单词边界。
    \d 数字,\w 单词字符,\s 空白,+ 一个或多个,( ) 捕获组,\b 单词边界。
  2. 打开 cv.cm 的正则测试

    模式框、标志和测试文本都准备好了。不上传。

    打开正则测试
  3. 输入模式并粘贴文本

    在「正则表达式」里输入模式,不要加斜杠,比如 \d{4}-\d{2}-\d{2} 匹配 2026-10-29 这样的日期。在「测试文本」里粘贴该匹配和不该匹配的行。

  4. 设置标志

    g 找出所有匹配而不只第一个;i 忽略大小写;m 让 ^ 和 $ 按行生效;s 让 . 也能匹配换行;u 开启完整 Unicode。匹配数那一行会显示当前的标志。

    标志:g 全部匹配,i 忽略大小写,m 按行,s 点号匹配换行,u Unicode。
    标志:g 全部匹配,i 忽略大小写,m 按行,s 点号匹配换行,u Unicode。
  5. 看匹配和分组

    每处匹配都列出文本和捕获组。(\d{4})-(\d{2}) 匹配 2026-10,得到第 1 组 = 2026、第 2 组 = 10。模式匹配太多时,通常要加 \b 或缩小字符类。

  6. 预览替换

    在「替换(可选)」里填替换内容:$& 是整段匹配,$1 是第一组。[$&] 会给每处匹配套上方括号。「复制匹配」把所有匹配放到剪贴板。

常见问题

能免费在线测试正则吗?

可以。cv.cm 在这个标签页里运行。不上传。

用的是哪种正则?

JavaScript,和浏览器、Node.js 一样。多数简单模式在 Python 和 Java 里也一样。

为什么只有一处匹配?

打开 g 标志才会找出所有匹配。

替换里怎么用捕获组?

$1 是第一组,$2 是第二组,$& 是整段匹配。

要输入斜杠吗?

不用。只输入模式本身;标志用复选框。