我有一个代码行
regex = /^(?<aa>[0-9]{2})-(?<bb>[0-9]{6})-(?<cc>[0-9]{6})-(?<d>[0-9])$/;
打字稿(或者是webpack?)抱怨:
Module parse failed: Error parsing regular expression: Invalid regular expression: /^(?<aa>[0-9]{2})-(?<bb>[0-9]{6})-(?<cc>[0-9]{6})-(?<d>[0-9])$/: Invalid group (18:23)
You may need an appropriate loader to handle this file type.
命名组似乎有问题。这是javascript中有效的正则表达式。
我正在使用打字稿2.9.2
我非常喜欢使用命名组。我该怎么做才能使它们编译?
答案 0 :(得分:1)
根据https://regexr.com/,这实际上不是JavaScript中有效的正则表达式。还有Firefox和Edge。
或者更确切地说,这取决于浏览器。 ES2018已添加对命名组的支持。因此,您的里程可能会有所不同。
有关兼容性,请参见http://kangax.github.io/compat-table/es2016plus/。
Typescript编译器不是引发错误的编译器,而是Webpack模块加载器。我会尝试将目标设置为ES2018,看看是否可行。
或者在Named capturing groups in JavaScript regex?上查看有关数组解构的答案。
答案 1 :(得分:0)
不幸的是,Typescript本身不支持编译正则表达式本身。参见(问题#24531)[https://github.com/Microsoft/TypeScript/issues/24531]。
如果您还在构建链中使用Babel,请考虑使用plugin-transform-named-capturing-groups-regex