For AI agents: the complete documentation index is available at /tc39-atlas/llms.txt, the full documentation bundle is available at /tc39-atlas/llms-full.txt, and this page is available as Markdown at /tc39-atlas/proposals/stage/4/proposal-regexp-modifiers.md.
  • 简体中文
  • RegExp Modifiers S4

    中文标题:正则表达式修饰符

    提案概览
    提案速览

    该提案为 ECMAScript 正则表达式引入了模式修饰符,允许在子表达式中使用诸如 (?imsx-imsx:子表达式) 的语法切换 imsx 等标志。它解决了在无法执行代码的上下文(如配置文件)中控制正则表达式标志的需求。

    Note

    以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。

    ECMAScript 正则表达式模式修饰符

    状态

    阶段: 4
    提案负责人: Ron Buckton (@rbuckton)

    关于本提案的详细状态,请参见下面的 TODO

    作者

    动机

    在大多数正则表达式引擎中,一个常见的功能是能够控制正则表达式标志(flags)的子集,例如:

    当正则表达式在无法评估可执行代码的上下文中定义时(例如 JSON 配置文件或 TextMate tmLanguage 语法文件),修饰符尤其有用。

    作为本提案的一部分,我们将研究每个现有的(以及未来提议的)RegExp 标志,以确定它们是否适合用作修饰符。

    现有实现

    更多信息请参见 https://rbuckton.github.io/regexp-features/features/modifiers.html

    语法

    修饰符允许您在子表达式内更改当前活动的 RegExp 标志。

    • (?imsx-imsx:子表达式) — 为子表达式设置或取消(使用 -)指定的 RegExp 标志。
    • (?imsx-imsx) — 从当前位置开始,直到下一个右括号 ) 或模式结束,设置或取消(使用 -)指定的 RegExp 标志。

    注意:某些标志不能在表达式中间修改。目前包括 g(全局)、y(粘性)、u(Unicode)和 d(hasIndices)。

    注意:实际支持的标志将根据具体情况确定。参见 #1

    注意:这与现有语法没有冲突,因为 ECMAScript 目前对此语法在 u 和非 u 模式下均会产生错误。

    注意:“自包含”形式((?imsx-imsx:子表达式))于 2021 年 12 月 15 日推进到 Stage 2。

    注意:自 2021 年 12 月 15 日起,“无边界”形式((?imsx-imsx))不再作为本提案的一部分考虑。

    示例

    const re1 = /^[a-z](?-i:[a-z])$/i;
    re1.test("ab"); // true
    re1.test("Ab"); // true
    re1.test("aB"); // false
    
    const re2 = /^(?i:[a-z])[a-z]$/;
    re2.test("ab"); // true
    re2.test("Ab"); // true
    re2.test("aB"); // false

    历史

    • 2021 年 10 月 27 日 — 提议进入 Stage 1(幻灯片
      • 结果:进入 Stage 1
    • 2021 年 12 月 15 日 — 提议进入 Stage 2(幻灯片
      • 结果:仅以“自包含”形式进入 Stage 2(“无边界”形式未通过)。
      • Stage 2 审查人:Richard Gibson、Waldemar Horwat
    • 2022 年 6 月 7 日 — 提议进入 Stage 3(幻灯片

    TODO

    以下是推进 TC39 提案流程 各个阶段所需的高级任务列表:

    Stage 1 进入标准

    Stage 2 进入标准

    Stage 2.7 进入标准

    Stage 3 进入标准

    • 已为主要使用场景编写 Test262 验收测试,并已合并

    Stage 4 进入标准