NodeJS 中的非捕获分支重置正则表达式

Non capturing branch reset regex in NodeJS

https://regex101.com/r/UXnhTy/1

var date = /(?|(Sat)ur|(Sun))day/;

console.log(date.exec("Sunday"));

这失败了:

SyntaxError: Invalid regular expression: /(?|(Sat)ur|(Sun))day/: Invalid group

是否有支持此功能的 NodeJS 版本?或者那里的一些图书馆

我用 nodejs v8.12.0 测试了这个

不是真的。 JavaScript 的高级替代正则表达式库是 XRegExp, but it doesn't have the feature you're after - not even as an addon.
XRegExp 支持的一个更简单的正则表达式特性是 named capture groups,所以你可以这样写:

var days = XRegExp('(?:(?<d>Sat)ur|(?<d>Sun))day', 'gi');

您不能使用数字作为组名,但命名组应该符合您的需要 - 它们允许反向引用(使用 \k<d>)、替换(${d})、捕获(match.d), 以及常规编号组的所有特征。

ES2018 原生支持命名捕获组:ES2018 Regular Expression Updates
根据node.green, named capture groups are supported by Node.js ≥10.3.0, or by ≥8.6.0 with the --harmony flag.