# regexpu-core 中文文档

规范地址：https://npmcn.com/package/regexpu-core/

版本：6\.5\.4
npm 元数据更新时间：2026-11-05T03:19:01.881Z
中文译文更新时间：2026-11-05T16:27:50.804Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/regexpu-core
原文对照：https://npmcn.com/package/regexpu-core/?lang=original
项目主页：https://mths.be/regexpu
源码仓库：https://github.com/mathiasbynens/regexpu-core

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

- 包体积（解压后）：146 kB，10 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=4
- 运行依赖：6 个
- 首次发布：2016-01-11T16:23:08.754Z
- 最新版本发布：2026-11-05T03:19:01.515Z
- 近 30 天下载量：201438572（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：57（近 12 个月 3 个）

## 中文简介

regexpu 的核心功能(即:. `rewritePattern(pattern, flag)`),能将ES6 Unicode正则表达式翻译为ES5.

## 安装

```sh
npm install regexpu-core
```

也可以使用：`pnpm add regexpu-core`、`yarn add regexpu-core`、`bun add regexpu-core`

## README

# regexpu 核心 [![Build status](https://github.com/mathiasbynens/regexpu-core/workflows/run-checks/badge.svg)](https://github.com/mathiasbynens/regexpu-core/actions?query=workflow%3Arun-checks) [![regexpu-core on npm](https://img.shields.io/npm/v/regexpu-core)](https://www.npmjs.com/package/regexpu-core)

_常规_ 是源代码转写器,能够使用JavaScript-today(ES5)中的ES2015 Unicode正则表达式.

_regexpu 核心_ 包含 _常规_其核心功能,即:. `rewritePattern(pattern, flag)`,可以重写正则表达式,从而使用 [eS-2015号协定 `u` 旗帜](https://mathiasbynens.be/notes/es6-unicode-regex) 成为等同的ES5相容正则表达式模式.

## 安装

用于 _regexpu 核心_ 在方案上,通过 [无](https://www.npmjs.com/)数字 :

```bash
npm install regexpu-core --save
```

接下来, `require` 内容:

```js
const rewritePattern = require('regexpu-core');
```

## API 密码

此模块导出一个命名的函数 `rewritePattern`。 。 。 .

### `rewritePattern(pattern, flags, options)`

此函数取一个代表正则表达式图案的字符串以及代表其旗帜的字符串,并返回一个ES5相容的图案版本.

```js
rewritePattern('foo.bar', 'u', { unicodeFlag: "transform" });
// → 'foo(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])bar'

rewritePattern('[\\u{1D306}-\\u{1D308}a-z]', 'u', { unicodeFlag: "transform" });
// → '(?:[a-z]|\\uD834[\\uDF06-\\uDF08])'

rewritePattern('[\\u{1D306}-\\u{1D308}a-z]', 'ui', { unicodeFlag: "transform" });
// → '(?:[a-z\\u017F\\u212A]|\\uD834[\\uDF06-\\uDF08])'
```

_regexpu 核心_ 也可以重写非 ES6 正则表达式, 用于显示其行为一旦发生改变 `u` 财务报告和审定财务报表 `i` 添加了旗帜 :

```js
// In ES5, the dot operator only matches BMP symbols:
rewritePattern('foo.bar', '', { unicodeFlag: "transform" });
// → 'foo.bar'

// But with the ES2015 `u` flag, it matches astral symbols too:
rewritePattern('foo.bar', 'u', { unicodeFlag: "transform" });
// → 'foo(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])bar'
```

可选 `options` 参数确认以下属性:

#### 稳定正则表达式特性

这些选项可设定为 `false` 或者说 `'transform'`时 `'transform'`,对应的功能被编译为可以运行在更古老浏览器中的更古老的语法. 使用时 `false` (默认),它们没有被编译,可以依靠它们来编译更现代的特性.

-   `unicodeFlag` - 那个 `u` 旗下,允许支持窗体中的 Unicode 代码点越出 `\u{...}`。 。 。 .
    
    ```js
    rewritePattern('\\u{ab}', '', {
      unicodeFlag: 'transform'
    });
    // → '\\u{ab}'
    
    rewritePattern('\\u{ab}', 'u', {
      unicodeFlag: 'transform'
    });
    // → '\\xAB'
    ```
    
-   `dotAllFlag` - 那个 [`s` (单位:千美元)`dotAll`() 旗帜](https://github.com/mathiasbynens/es-regexp-dotall-flag)。 。 。 .
    
    ```js
    rewritePattern('.', '', {
      dotAllFlag: 'transform'
    });
    // → '.'
    
    rewritePattern('.', 's', {
      dotAllFlag: 'transform'
    });
    // → '[^]'
    
    rewritePattern('.', 'su', {
      dotAllFlag: 'transform'
    });
    // → '[^]'
    ```
    
-   `unicodePropertyEscapes` - 说吧 [Unicode 属性逃脱](https://npmcn.com/package/regexpu-core/property-escapes.md)。 。 。 .
    
    默认情况下,它们被编译为表单的 Unicode 代码点越出 `\u{...}`如果 `unicodeFlag` 选项设定为 `'transform'` 它们往往导致更大的产出,尽管有这种情况(例如: `\p{Lu}`在哪里实际 _减少_ 输出大小.
    
    ```js
    rewritePattern('\\p{Script_Extensions=Anatolian_Hieroglyphs}', 'u', {
      unicodePropertyEscapes: 'transform'
    });
    // → '[\\u{14400}-\\u{14646}]'
    
    rewritePattern('\\p{Script_Extensions=Anatolian_Hieroglyphs}', 'u', {
      unicodeFlag: 'transform',
      unicodePropertyEscapes: 'transform'
    });
    // → '(?:\\uD811[\\uDC00-\\uDE46])'
    ```
    
-   `namedGroups` - 说吧 [命名的捕获组](https://github.com/tc39/proposal-regexp-named-groups)。 。 。 .
    
    ```js
    rewritePattern('(?<name>.)\\k<name>', '', {
      namedGroups: 'transform'
    });
    // → '(.)\1'
    ```
    
-   `unicodeSetsFlag` - 说吧 [这个 `v` (单位:千美元)`unicodeSets`() 旗帜](https://github.com/tc39/proposal-regexp-set-notation)
    
    ```js
    rewritePattern('[\\p{Emoji}&&\\p{ASCII}]', 'v', {
      unicodeSetsFlag: 'transform'
    });
    // → '[#\\*0-9]'
    ```
    
    默认情况下,带有 `v` 旗帜被转换成图案 `u` 旗帜。 如果你想降低他们,你可以设置 `unicodeFlag: 'transform'` 选项.
    
    ```js
    rewritePattern('[^[a-h]&&[f-z]]', 'v', {
      unicodeSetsFlag: 'transform'
    });
    // → '[^f-h]' (to be used with /u)
    ```
    
    ```js
    rewritePattern('[^[a-h]&&[f-z]]', 'v', {
      unicodeSetsFlag: 'transform',
      unicodeFlag: 'transform'
    });
    // → '(?:[\0-ei-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])' (to be used without /u)
    ```
    
-   `modifiers` - 说吧 [内入 `i`编号 :`m`编号 :`s` 修改](https://github.com/tc39/proposal-regexp-modifiers)
    
    ```js
    rewritePattern('(?i:[a-z])[a-z]', '', {
      modifiers: 'transform'
    });
    // → '(?:[A-Za-z])[a-z]'
    ```
    

#### 实验正则表达式特性

这些选项可设定为 `false`, (中文(简体) ), `'parse'` 财务报告和审定财务报表 `'transform'`时 `'transform'`,对应的功能被编译为可以运行在更古老浏览器中的更古老的语法. 使用时 `'parse'`,它们被解析,并留在输出模式中。 使用时 `false` (默认),如果使用,它们会导致语法错误.

一旦这些特征变得稳定(当建议被接受为ECMAScript的一部分时),将按默认情况加以分析,从而 `'parse'` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}会表现得像 `false`。 。 。 .

#### 杂项选项

-   `onNamedGroup`
    
    此选项是一个在找到一个命名的捕获组时被调用的函数 。 它得到两个参数: 组合的名称,及其索引.
    
    ```js
    rewritePattern('(?<name>.)\\k<name>', '', {
      onNamedGroup(name, index) {
        console.log(name, index);
        // → 'name', 1
      }
    });
    ```
    
-   `onNewFlags`
    
    此选项是一个函数, 它被调用来传递必须用来解释所产生的图案的旗帜 .
    
    ```js
    rewritePattern('abc', 'um', '', {
      unicodeFlag: 'transform',
      onNewFlags(flags) {
        console.log(flags);
        // → 'm'
      }
    })
    ```
    

### 洞穴

-   [看后面的断言](https://github.com/tc39/proposal-regexp-lookbehind) 无法转换为旧语法 .
-   使用时 `namedGroups: 'transform'`, (中文(简体) ), _regexpu 核心_ 只有照顾 _语法_: 您仍需要运行时的包装器来覆盖正则表达式 `.groups` 财产 `RegExp.prototype.match()`'结果. 使用时 _regexpu 核心_ 通过Babel,它自动处理.

## 维护者

### 如何发布新版

1.  打开 `main` 分支,将版本编号打入 `package.json`数字 :
    
    ```sh
    npm version patch -m 'Release v%s'
    ```
    
    改为 `patch`,使用时 `minor` 或者说 `major` [视需要](https://semver.org/)。 。 。 .
    
    注意这会产生 Git 承诺 + 标记 .
    
2.  按下释放承诺并标记 :
    
    ```sh
    git push --follow-tags
    ```
    
    然后我们的CI会自动将新版发布到npm.
    
3.  一旦发布到 npm, 更新 [`regexpu`](https://github.com/mathiasbynens/regexpu) 利用它,和 [剪切新发布 `regexpu` 还有](https://github.com/mathiasbynens/regexpu#how-to-publish-a-new-release)。 。 。 .
    

## 作者

| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
| --- |
| [马蒂亚斯·拜恩斯](https://mathiasbynens.be/) |

## 许可证

_regexpu 核心_ 可在 [麻省理工学院](https://mths.be/mit) 执照.

## 常见问题

### regexpu-core 是什么？

regexpu 的核心功能\(即:\. rewritePattern\(pattern, flag\)\),能将ES6 Unicode正则表达式翻译为ES5\.

### 如何安装 regexpu-core？

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

### regexpu-core 支持 TypeScript 吗？

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

### regexpu-core 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### regexpu-core 需要什么版本的 Node\.js？

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

### regexpu-core 可以商用吗？

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

### regexpu-core 的下载量有多少？

根据 npm 官方下载统计，regexpu-core 在 2026/10/05 – 2026/11/03 这 30 天内被下载 201,438,572 次，日均约 6,714,619 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### regexpu-core 还在维护吗？

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

