Today
Lookbehind 现在是官方的一部分ES 2018 规范 https://tc39.github.io/ecma262/。阿克塞尔·劳施迈尔 (Axel Rauschmayer) 给出了他的博客文章中有很好的介绍 http://2ality.com/2017/05/regexp-lookbehind-assertions.html.
History
看起来当时 Brendan Eich 并不知道它的存在 https://mail.mozilla.org/pipermail/es-discuss/2010-November/012165.html(因为 Netscape 是基于旧版本的 Perl 构建的):
那是 1998 年,我在 97 年所做的 Netscape 4 工作是基于 Perl 4(!),但我们向 ECMA TC39 TG1(JS 组——当时情况不同,包括大写)提议了一些基于 Perl 5 的东西。我们没有并不能得到所有的东西,我们必须合理化一些明显的怪癖。
我不记得lookbehind(它出现在98年7月的Perl 5.005中)被故意排除。 Waldemar 可能还记得更多,我把 netscape.com 内的 JS 密钥交给了他,让他可以去 mozilla.org。
如果您想编写提案或迷你规范(甚至是 ES5 的风格),请告诉我。下周我将与其他 TC39 成员讨论这个问题。
/be
邮件列表上有很多不同的尝试将其包含在内,但从性能角度来看,它仍然是一个相当复杂的功能,因为EcmaScript 正则表达式 https://esdiscuss.org/topic/regexp-lookbehind#content-7 are 回溯 https://msdn.microsoft.com/en-us/library/dsy130b4%28v=vs.110%29.aspx使用捕获组时,回溯需要基于和回溯。这可能会导致诸如以下的问题灾难性的回溯 http://www.regular-expressions.info/catastrophic.html当使用不正确时。
在某个时候,它被建议用于 ES6/Es 2015,但它从未形成草案,更不用说规范了。在里面讨论中的最后一个帖子 https://www.mail-archive.com/es-discuss@mozilla.org/msg26650.html,似乎没有人承担起实施它的任务。如果有人觉得需要编写一个实现,他们可以注册ES 讨论列表 https://mail.mozilla.org/listinfo/es-discuss并提出它。
2015 年 5 月更新:
2015年5月,Nozomu Katō 提出了 ES7 后视实现 https://esdiscuss.org/topic/look-behind-proposal.
2015 年 9 月更新:
正则表达式后视被添加为第0阶段提案 https://github.com/tc39/ecma262/blob/master/stage0.md.
2017 年 5 月更新:
该提案目前处于第 3 阶段 https://github.com/tc39/proposal-regexp-lookbehind。这意味着现在至少有两个浏览器需要实现它才能成为下一个 EcmaScript 标准的一部分。正如@martixy 在评论中提到的,Chrome已经在JS实验标志后面实现了它 https://v8project.blogspot.ch/2016/02/regexp-lookbehind-assertions.html.