regexpu-core

中文文档
6.5.4发布于 2026/11/05MITTypeScriptCommonJS构建来源已验证近 30 天下载 2亿

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

中文使用文档
文档目录8 节
  1. 安装
  2. API 密码
  3. rewritePattern(pattern, flags, options)
  4. 洞穴
  5. 维护者
  6. 如何发布新版
  7. 作者
  8. 许可证

regexpu 核心 Build status regexpu-core on npm

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

regexpu 核心 包含 常规其核心功能,即:. rewritePattern(pattern, flag),可以重写正则表达式,从而使用 eS-2015号协定 u 旗帜 成为等同的ES5相容正则表达式模式.

安装

用于 regexpu 核心 在方案上,通过 无数字 :

npm install regexpu-core --save

接下来, require 内容:

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

API 密码

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

rewritePattern(pattern, flags, options)

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

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 添加了旗帜 :

// 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{...}。 。 。 .

    rewritePattern('\\u{ab}', '', {
      unicodeFlag: 'transform'
    });
    // → '\\u{ab}'
    
    rewritePattern('\\u{ab}', 'u', {
      unicodeFlag: 'transform'
    });
    // → '\\xAB'
    
  • dotAllFlag - 那个 s (单位:千美元)dotAll() 旗帜。 。 。 .

    rewritePattern('.', '', {
      dotAllFlag: 'transform'
    });
    // → '.'
    
    rewritePattern('.', 's', {
      dotAllFlag: 'transform'
    });
    // → '[^]'
    
    rewritePattern('.', 'su', {
      dotAllFlag: 'transform'
    });
    // → '[^]'
    
  • unicodePropertyEscapes - 说吧 Unicode 属性逃脱。 。 。 .

    默认情况下,它们被编译为表单的 Unicode 代码点越出 \u{...}如果 unicodeFlag 选项设定为 'transform' 它们往往导致更大的产出,尽管有这种情况(例如: \p{Lu}在哪里实际 减少 输出大小.

    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 - 说吧 命名的捕获组。 。 。 .

    rewritePattern('(?<name>.)\\k<name>', '', {
      namedGroups: 'transform'
    });
    // → '(.)\1'
    
  • unicodeSetsFlag - 说吧 这个 v (单位:千美元)unicodeSets() 旗帜

    rewritePattern('[\\p{Emoji}&&\\p{ASCII}]', 'v', {
      unicodeSetsFlag: 'transform'
    });
    // → '[#\\*0-9]'
    

    默认情况下,带有 v 旗帜被转换成图案 u 旗帜。 如果你想降低他们,你可以设置 unicodeFlag: 'transform' 选项.

    rewritePattern('[^[a-h]&&[f-z]]', 'v', {
      unicodeSetsFlag: 'transform'
    });
    // → '[^f-h]' (to be used with /u)
    
    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 修改

    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

    此选项是一个在找到一个命名的捕获组时被调用的函数 。 它得到两个参数: 组合的名称,及其索引.

    rewritePattern('(?<name>.)\\k<name>', '', {
      onNamedGroup(name, index) {
        console.log(name, index);
        // → 'name', 1
      }
    });
    
  • onNewFlags

    此选项是一个函数, 它被调用来传递必须用来解释所产生的图案的旗帜 .

    rewritePattern('abc', 'um', '', {
      unicodeFlag: 'transform',
      onNewFlags(flags) {
        console.log(flags);
        // → 'm'
      }
    })
    

洞穴

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

维护者

如何发布新版

  1. 打开 main 分支,将版本编号打入 package.json数字 :

    npm version patch -m 'Release v%s'
    

    改为 patch,使用时 minor 或者说 major 视需要。 。 。 .

    注意这会产生 Git 承诺 + 标记 .

  2. 按下释放承诺并标记 :

    git push --follow-tags
    

    然后我们的CI会自动将新版发布到npm.

  3. 一旦发布到 npm, 更新 regexpu 利用它,和 剪切新发布 regexpu 还有。 。 。 .

作者

twitter/mathias
马蒂亚斯·拜恩斯

许可证

regexpu 核心 可在 麻省理工学院 执照.

版本与发布记录

regexpu-core 共发布 57 个版本,首次发布于 2016/01/12;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.5.4latest2026/11/051 天前
6.5.32026/10/061 个月前
6.5.22026/09/291 个月前
6.4.02025/09/221.1 年前
6.3.12025/09/101.2 年前
6.3.02025/09/101.2 年前

关于 regexpu-core 的常见问题

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 和提交记录判断。