使用正则表达式使用 Google 标签管理器提取 URL 的一部分

Extract part of URL with Google tag manager using regex

我正在寻找类似的东西:Extract part of URL with Google tag manager

但由于 url 结尾的不同,有些以 / 结尾,有些则没有。

我的urls:

我正在尝试提取 "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; 
  }
}

这个函数有效,但我想知道是否可以用正则表达式一次性完成?

如果 smart 在开头,您可以将 ung-barn- 部分设为可选,然后不匹配正斜杠:

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

Regex demo

将匹配:

  • \bsmart- 匹配单词边界 \b 后跟 smart-
  • (?:非捕获组
    • ung-字面匹配
    • |
    • barn-字面匹配
  • )? 关闭非捕获组并使其可选
  • [^\/]+ 使用否定字符匹配 1 次以上而不是正斜杠 class

要匹配 末尾的这些字符串 URL 只有 你需要使用

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

regex demo

你的函数看起来像

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

图案详情

  • \/ - 反斜杠
  • ((?:smart|ung|barn)-[^\/]*) - 第 1 组:smartungbarn
  • - - 一个连字符
  • \/? - 1 或 0 个反斜杠
  • $ - 字符串结尾。