从 GTM 中的字符串值中提取属性

Extract properties from a string value in GTM

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

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

'/* Do not change / var AWIN = {}; AWIN.Tracking = {}; AWIN.Tracking.Sale = {}; / Set your transaction parameters */ AWIN.Tracking.Sale.amount = "00.00"; AWIN.Tracking.Sale.channel = "aw"; AWIN.Tracking.Sale.currency = "GBP"; AWIN .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