# ansi-regex 中文文档

规范地址：https://npmcn.com/package/ansi-regex/

版本：6\.5\.0
npm 元数据更新时间：2026-10-29T13:35:21.124Z
中文译文更新时间：2026-11-04T08:59:54.806Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/ansi-regex
原文对照：https://npmcn.com/package/ansi-regex/?lang=original
项目主页：https://github.com/chalk/ansi-regex#readme
源码仓库：https://github.com/chalk/ansi-regex

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：7.4 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=12
- 运行依赖：0 个
- 首次发布：2014-06-03T16:59:22.332Z
- 最新版本发布：2026-10-29T13:35:20.896Z
- 近 30 天下载量：1995886547（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：24（近 12 个月 3 个）

## 中文简介

用于匹配ANSI转义码的正则表达式

## 安装

```sh
npm install ansi-regex
```

也可以使用：`pnpm add ansi-regex`、`yarn add ansi-regex`、`bun add ansi-regex`

## README

# ansi-regex

> 匹配正则表达式 [ANSI转义码](https://en.wikipedia.org/wiki/ANSI_escape_code)

## 安装

```sh
npm install ansi-regex
```

## 用法

```js
import ansiRegex from 'ansi-regex';

ansiRegex().test('\u001B[4mcake\u001B[0m');
//=> true

ansiRegex().test('cake');
//=> false

'\u001B[4mcake\u001B[0m'.match(ansiRegex());
//=> ['\u001B[4m', '\u001B[0m']

'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
//=> ['\u001B[4m']

'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
```

## API

### ansiRegex(选项?)

返回匹配ANSI转义码的正则表达式。

#### 选项

类型: `object`

##### onlyFirst

类型: `boolean`  
默认值: `false` _（匹配字符串中的任何ANSI转义码）_

只匹配第一个ANSI转义。

## 重要的

如果在服务器上下文中针对不受信任的用户输入运行正则表达式，则应该 [给它一个时间](https://github.com/sindresorhus/super-regex)。

**我不认为 [重做](https://blog.yossarian.net/2022/12/28/ReDoS-vulnerabilities-and-misaligned-incentives) 此包的有效漏洞。**

## 常见问题解答

### 为什么要测试不符合ECMA 48标准的代码？

我们作为测试运行的一些代码是我们在寻找各种非标准或制造商特定代码列表时获得的代码。我们对标准代码和非标准代码都进行了测试，因为它们大多数都遵循相同或类似的格式，并且可以安全地在字符串中进行匹配，而不会有删除实际字符串内容的风险。有一些不遵循传统格式的非标准控制代码(例如： 它们以数字结尾)，从而迫使我们将它们排除在测试之外，因为我们无法可靠地匹配它们。

从历史的角度来看，这些ECMA标准是在90年代初建立的，而VT100则是在70年代中后期设计的。在那个时候，控制代码仍然是相当不受控制的，工程师们将它们用于许多事情，即激活可能已经专有的硬件端口。 在其他地方，你可以看到类似的“混乱”代码出现在x86处理器架构中；在某些品牌的处理器上有大量的“中断”，它们可能意味着不同的东西，其中大多数已经被淘汰了。

## 维护人员

-   [Sindre Sorhus](https://github.com/sindresorhus)
-   [Josh Junon](https://github.com/qix-)

## 常见问题

### ansi-regex 是什么？

用于匹配ANSI转义码的正则表达式

### 如何安装 ansi-regex？

在项目目录运行 npm install ansi-regex，或使用 pnpm add / yarn add / bun add。

### ansi-regex 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### ansi-regex 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### ansi-regex 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=12。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### ansi-regex 可以商用吗？

ansi-regex 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### ansi-regex 的下载量有多少？

根据 npm 官方下载统计，ansi-regex 在 2026/10/04 – 2026/11/02 这 30 天内被下载 1,995,886,547 次，日均约 66,529,552 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### ansi-regex 还在维护吗？

最新版本 6\.5\.0 发布于 2026/10/29（6 天前）；至今共发布 24 个版本，其中过去 12 个月发布了 3 个；首次发布于 2014/06/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

