Задача: Нужно определить находимся ли мы на главной странице или нет посредством JS.
Дано: url главной страницы всегда начинается с локали /ru/ или /en/.
В чем проблема: не могу составить регулярку так, чтобы наше условие if срабатывало только когда у нас адрес такой http://www.exemple.com/ru/ или такой http://www.exemple.com/en/, но не, к примеру, такой http://www.exemple.com/ru/category/
Вот код:
var urlpattern = new RegExp("\/(ru|en)\/");
if (urlpattern.test(window.location.pathname)) {
};
Как итог:
Подскажите как правильно составить регулярное выражение?
Правильно ли я поступаю используя для сравнения пути метод test()?
Ответ
Используйте $ для проверки конца текста:
var urlpattern = new RegExp("/(ru|en)/$");
Или так:
var urlpattern = /\/(ru|en)\/$/;
Метод RegExp#test() вполне подходит для проверки на совпадение по регулярному выражению.
/ - прямой слеш (экранирование этого символа в конструкторе RegExp не требуется)
(ru|en) - подстроки ru или en
/ - прямой слеш (если он необязательный, надо просто добавить кванификатор ? (= 1 или 0 повторений): new RegExp("/(ru|en)/?$") или /\/(ru|en)\/?$/)
$ - конец строки.
См. демо регулярного выражения
var urls = ['http://www.exemple.com/ru/',
'http://www.exemple.com/en/',
'http://www.exemple.com/ru/category/',
'http://www.exemple.com/en/',
'http://www.exemple.com/ru'];
var rx = /\/(ru|en)\/?$/;
for (var url of urls) {
console.log(url, "=>", rx.test(url) ? "найден": "не найден");
}
Комментариев нет:
Отправить комментарий