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/proposal-regexp-r-escape.md.
  • 简体中文
  • RegExp \R Escape S1

    中文标题:正则表达式 \R 转义

    提案概览
    提案速览

    本提案在正则表达式中引入 \R 转义,以匹配任何 Unicode 行终止符序列,目前难以正确编写。它需要 u 或 v 标志,且不支持在字符类内部使用。

    Note

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

    ECMAScript 正则表达式 \R 转义

    状态

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

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

    作者

    动机

    注意:有关本提案如何与其他可能的正则表达式未来特性相匹配的概述,请参见 https://github.com/rbuckton/proposal-regexp-features

    \R 转义序列匹配匹配 Unicode 行终止符的各种码点集合,这些码点集合通常难以正确编写。

    现有实现

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

    语法

    • \R — 匹配任何行结束字符序列。

    注意:需要 uv 标志,因为 \R 目前在没有 u 标志的情况下只是对 R 的转义。

    注意:不支持在字符类内部使用。

    语义

    • uv 模式下,\R 大致等价于以下模式:
      (?>\r\n?|[\x0A-\x0C\x85\u{2028}\u{2029}])
      • mu 模式下的 ^$ 对齐
    • 当不在 uv 模式下时,\R 将继续匹配字面字符 R

    注意:上面的示例使用了原子组 (?>) 来防止在匹配 \r\n? 时进行回溯。原子组在 此处 提出。

    示例

    // 无论行终止符样式如何,都分割行
    const lines = fs.readFileSync("file.txt", "utf8").split(/\R/ug);

    历史

    • 2021年10月28日 — 提出进入 Stage 1(幻灯片
      • 结果:推进至 Stage 1

    TODO

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

    Stage 1 进入标准

    • 确定了一位 "提案负责人" 来推进该提案。
    • 编写了概述问题或需求以及解决方案大致形态的说明
    • 提供了使用方法的示例性示例
    • 高级 API

    Stage 2 进入标准

    Stage 3 进入标准

    Stage 4 进入标准

    • 已为主要使用场景编写了 Test262 验收测试并合并
    • 两个通过验收测试的兼容实现:[1], [2]
    • 已向 tc39/ecma262 发送了包含集成规范文本的拉取请求
    • ECMAScript 编辑器已对该拉取请求签字确认。