我正在尝试从GTM网站上的旧AWIN标签中提取信息。我们正在努力将其推送到DataLayer中,但这将需要一段时间,因此这是目前的下一步。

我已经设法将信息提取到GTM中的字符串中,该字符串返回以下值(我手动删除了此帖子的值),这很棒:


  '/ *请勿更改/ var AWIN = {}; AWIN.Tracking = {};
  AWIN.Tracking.Sale = {}; /设置交易参数* /
  AWIN.Tracking.Sale.amount =“ 00.00”; AWIN.Tracking.Sale.channel =
  “ aw”; AWIN.Tracking.Sale.currency =“ GBP”;赢
  .Tracking.Sale.orderRef =“ 00000”; AWIN.Tracking.Sale.parts =
  “ DEFAULT:00.00”; AWIN.Tracking.Sale.test =“ 0”;
  AWIN.Tracking.Sale.voucher =“”;'


我唯一需要的部分是


  AWIN.Tracking.Sale.parts。


我们创建的提取脚本是:

function() {
  var awintrackstr = {{DOM - AWIN Image Full}};
  return awintrackstr.match(/AWIN.Tracking.Sale.parts = \"(.*)\";$/)[1];
}


但是,这正在提取超出我们所需值的所有内容:


  'DEFAULT:00:00“; AWIN.Tracking.Sale.test =” 0“; AWIN.Tracking.Sal...。


我们创建的所有测试都表明上述内容应该可以使用,但是在GTM中不能使用

有没有人知道如何在GTM中使用它?同样,我们希望吸引的是DEFAULT:00.00部分。

提前致谢

最佳答案

这是因为正则表达式中的"(.*)"部分。
.*将匹配任何内容,包括其他"字符,从而使其与最后一个"匹配,而最后一个"(.*)"仍与您的正则表达式的其余部分匹配。

"([^"]*)"替换为",这将匹配非"的任何字符。

我还建议您在需要编写正则表达式时使用regex101.com。使用此功能,您还将注意到字符在javascript正则表达式中没有特殊含义,因此无需对其进行转义。

编辑:这是工作中的正则表达式的修改版本:https://regex101.com/r/TPUU6z/1

10-07 23:28