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

但是在 url 的结尾有所不同,有些以/结尾,有些则不是。

我的网址:

  • /mobilabonnement/mobilabonnement-for-alle/smart-12-gb
    /mobilabonnement/mobilabonnement-for-alle/smart-12-gb/
    /mobilabonnement/mobilabonnement-for-ungdom/smart-ung-12-gb
    /mobilabonnement/mobilabonnement-for-ungdom/smart-ung-12-gb/

  • 我正在尝试提取“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+ 次而不是使用否定字符类的正斜杠
  • 关于regex - 使用正则表达式使用 Google 标签管理器提取部分 URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53389765/

    10-11 14:11