无效的 Unicode 转义 \.使用命名捕获组时

Invalid Unicode escape \. when using named capture group

为了在 JavaScript 上使用命名捕获组,我做了以下修改:

diff --git a/assets/js/vue.js b/assets/js/vue.js
index f442939c9..6d9e707f0 100644
--- a/assets/js/vue.js
+++ b/assets/js/vue.js
@@ -44,7 +44,7 @@ Vue.config.silent = config.production;
 requireComponent.keys().forEach(fileName => {
   const
     componentConfig = requireComponent(fileName),
-    componentName = fileName.replace(/^(.*\/)?(.*)\.\w+$/u, '');
+    componentName = fileName.replace(/^(?<folder>.*\/)?(?<subfolder>.*)\.\w+$/u, '$<subfolder>');

   Vue.component(
     componentName,

但它不再编译(使用 webpack):

 error  in ./assets/js/vue.js

Syntax Error: SyntaxError: invalid Unicode escape \.
    at Array.forEach (<anonymous>)

如果我从正则表达式的末尾删除 \.,它会编译,但这是必需的,正常的,根本没有修改。

我不明白与命名捕获组替换的关系。

所以我的问题很简单:这个正则表达式有什么问题?

使用 [] 语法修复编译错误,它将检查内部给定的字符,而不是使用 unicode 转义。

以下正则表达式应该有效。

/^(?<folder>.*\/)?(?<subfolder>.*)[.]\w+$/u

但正如 Tyler Roper 所说,我认为这是一个 Webpack/Babel 编译错误,给定的正则表达式应该可以工作。