Неверный выход из Юникода \. при использовании именованной группы захвата
Чтобы использовать именованную группу захвата в 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, данное регулярное выражение должно работать.