@lagudal

Как правильно удалить слеши в начале и в конце?

Приветствую, есть три переменные типа string.
Одна - пусть будет так: const rootUrl = window.location.origin;
Вторая - скажем relativePath как очевидно является стринговым представлением относительного url, берется из атрибута. Сложение этих двух стрингов сравнивается с третьей переменной -
var currentUrl = window.location.href;
Проблема в том, что вторая переменная - relativePath - может быть записана несколькими вариантами - со слешами и/или в начале и/или в конце, и так и так, и совсем без них.
Например -
/category/product1/
/category/product2
category/product3/
/page.html/

и тд и тп.

Последняя переменная currentUrl также может быть как со слешем в конце так и без слеша.

Поэтому, перед конкатинацией и сравнением надо сначала удалить слеши у relativePath и у currentUrl, но только если слеш первый и/или последний символ в строке, чтобы не удалить промежуточные слеши, а потом уже например

rootUrl.concat('/', relativePath); - и уже сравнивать с currentUrl

Проблема что я с регулярками не дружу почти, подскажите как правильную составить )
  • Вопрос задан
  • 613 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
https://stackoverflow.com/questions/3840600/javasc...

if ( currentUrl.replace(/^\/|\/$/g, '') === [rootUrl.replace(/^\/|\/$/g, ''), relativeUrl.replace(/^\/|\/$/g, '')].join('/') ){
}


Однако стоит учесть, что window.location.href может содержать query string и hash string.
Поэтому лучше преобразовать все адреса в URL (new URL(window.location.href)) и уже из этого объекта собирать URL domain + pathname.
Тогда и регулярки не понадобятся скорее всего.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы