Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

Регулярное выражение в JS и определение главной страницы

Задача: Нужно определить находимся ли мы на главной странице или нет посредством 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) ? "найден": "не найден"); }

Комментариев нет:

Отправить комментарий