JavaScript Regex для перезаписи пути к файлу

1

Я хочу заменить путь к файлу задачей gulp. Для этого мне нужно написать Regex:

У меня есть структура папок ../assets/js/components/main/main.component.html, где мне нужно заменить весь путь, ../assets/js/components/**/, с пустой строкой. Поэтому после применения Regex в моем примере я должен получить только файл html, например: main.component.html

Regex должен соответствовать только пути ../assets/js/components/ с одним уровнем подпапки, например: ../assets/js/components/**/. Путь с только ../assets/js/components/ не должен совпадать и путь с несколькими подпапками ни ../assets/js/components/main/shouldnotmatch/

Я написал уже одно Regex:

^..\/assets\/js\/components\/(?:\[^\/\]+\/?)*$

Проблема здесь в том, что Он выбирает все. Любая идея, как это исправить?

РЕДАКТИРОВАТЬ:

Дополнительные примеры:

../assets/js/components/main/=>../assets/js/components/main/../assets/js/components/=> should not match../assets/js/components/test/index.html =>../assets/js/components/test/../assets/js/components/main/shouldnotmatch/shouldnotmatch.html =>../assets/js/components/main/../assets/js/components/some_components.html => should not match../assets/js/components/1.html => should not match

  • 0
    Во-первых, вам придется сбежать .
  • 0
    Обратите внимание, что вы можете использовать ^\.\.\/assets\/js\/components\/([^\/]+\/?)$ И убедиться, что вы ссылаетесь на значение группы 1 внутри кода. Обратите внимание, что в вашей демонстрации вы должны поместить \n в [^\/] чтобы избежать совпадения между строками. Смотрите regex101.com/r/PbCnXa/1
Показать ещё 12 комментариев
Теги:
gulp

1 ответ

1
Лучший ответ

Кажется, вы хотите избежать сопоставления файлов HMTL/HTM при использовании в месте subfolder.

Вы можете использовать lookahead, чтобы добавить это ограничение и использовать

^\.\.\/assets\/js\/components\/(?![^\/]+\.html?$)[^\/]+\/?

См. Демо-версию regex

подробности

  • ^ - начало строки
  • \.\. - 2 точки
  • \/assets\/js\/components\/ - буквальная строка /assets/js/components/
  • (?![^\/]+\.html?$) - сразу слева от текущего местоположения не может быть:
    • [^\/]+ - 1 или более символов, кроме /
    • \.html? - .html или htm
    • $ - в конце строки
  • [^\/]+ - 1 или более символов, кроме /
  • \/? - 1 или 0 / с

Ещё вопросы

Сообщество Overcoder
Наверх
Меню