Вы можете использовать
new RegExp("^.*?(?:" + siteNamesJoin + "|$)")
Шаблон будет выглядеть как
^.*?(?:americas|international|europe|asia-pacific|africa-middle-east|russia|india|$)
См. График регулярных выражений :
![enter image description here](https://i.stack.imgur.com/NwS5I.png)
Подробности
^
- начало строки .*?
- любые 0 или более символов, другиечем символы разрыва строки, как можно меньше (?:americas|international|europe|asia-pacific|africa-middle-east|russia|india|$)
- любое из значений между трубами или концом строки.
См. демонстрацию JS:
var urlCurrent = "www.example.com/web/americas/home";
var siteNames = ["americas","international","europe","asia-pacific","africa-middle-east","russia","india"];
var siteNamesJoin = siteNames.join('|');
var match = urlCurrent.match(new RegExp("^.*?(?:" + siteNamesJoin + "|$)"));
var siteUrlCurrent = match ? match[0] : "";
console.log(siteUrlCurrent);
ПРИМЕЧАНИЕ: если siteNames
«слова» могут содержать специальные метасимволы регулярных выражений, вам нужно будет экранировать элементы siteNames
:
var siteNamesJoin = siteNames.map(function (x) { return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') }).join('|');
Кроме того, если эти слова должны совпадать между /
или концом строки, вы можете изменить шаблон:
var match = urlCurrent.match(new RegExp("^(.*?)/(?:(?:" + siteNamesJoin + ")(?![^/])|$)"));
См. Другую демонстрацию.
var urlCurrent = "www.example.com/web/americas/home";
var siteNames = ["americas","international","europe","asia-pacific","africa-middle-east","russia","india"];
var siteNamesJoin = siteNames.map(function (x) { return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') }).join('|');
var match = urlCurrent.match(new RegExp("^.*?/(?:(?:" + siteNamesJoin + ")(?![^/])|$)"));
var siteUrlCurrent = match ? match[0] : "";
console.log(siteUrlCurrent);