Извлеките часть URL с помощью менеджера тегов Google с помощью регулярных выражений - PullRequest
0 голосов
/ 20 ноября 2018

Я ищу что-то похожее на: Извлечение части URL с помощью менеджера тегов Google

Но с разницей в конце URL, где некоторые заканчиваются на /, а некоторыенет.

Мои URL:

  • / мобильное соединение / мобильное соединение для аллелей / smart-12-gb / мобильное соединение / мобильное соединение для аллелей / smart-12-gb /
    / mobilabonnement / mobilabonnement-for-ungdom / smart-ung-12-gb
    / mobilabonnement / mobilabonnement-for-ungdom / smart-ung-12-gb /

I'mпытается извлечь "smart-12-gb" и "smart-ung-12-gb".

function(){

  var myRegexp = /(smart-|ung-|barn-)(.*)/g;
  var result = {{Updated Page Path}}.match(myRegexp);

  if(result !== null){
    result[0] = result[0].replace("/","");
    return result[0];
  }else{
    return null; 
  }
}

Эта функция работает, но мне было интересно, возможно ли сделать это за один раз, врегулярное выражение?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Чтобы соответствовать этим строкам только в конце URL-адреса , вам необходимо использовать

/\/((?:smart|ung|barn)-[^\/]*)\/?$/

См. Демонстрационную версию regex

Вашфункция будет выглядеть следующим образом:

function(){
  var myRegexp = /\/((?:smart|ung|barn)-[^\/]*)\/?$/;
  var result = {{Updated Page Path}}.match(myRegexp);
  return result ? result[1] : null; 
}

Детали шаблона

  • \/ - обратный слеш
  • ((?:smart|ung|barn)-[^\/]*) - группа 1: smart, ung или barn
  • - - дефис
  • \/? - 1 или 0 обратная косая черта
  • $ - конец строки.
0 голосов
/ 20 ноября 2018

Если smart в начале, вы можете сделать необязательные части ung- и barn-, а затем сопоставить их без косой черты:

\bsmart-(?:ung-|barn-)?[^\/]+

Regexдемо

Это будет соответствовать:

  • \bsmart- Соответствует границе слова \b, за которой следует smart-
  • (?: Группа без захвата
    • ung- Совпадение буквально
    • | Или
    • barn- Совпадение буквально
  • )? Закрыть без захватасгруппируйте и сделайте его необязательным
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...