Неверный выход из Юникода \. при использовании именованной группы захвата

Чтобы использовать именованную группу захвата в 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, '$2');
+    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>)

Компилируется, если я удаляю \. с конца регулярного выражения, но это требуется, нормально и не изменяется вообще.

Я не понимаю связь с заменой названной группы захвата.

Итак, мой вопрос прост: что за проблема с этим регулярным выражением?

1 ответ

Решение

С помощью [] Синтаксис исправляет ошибку компиляции, вместо этого он проверяет наличие указанного символа внутри, используя экранирование Юникода.

Следующее регулярное выражение должно работать.

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

Но, как сказал Тайлер Ропер, я думаю, что это ошибка компиляции Webpack/Babel, данное регулярное выражение должно работать.

Другие вопросы по тегам