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

时间:2018-05-01 10:57:28

标签: javascript string google-tag-manager

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

我设法将信息拉入GTM中的一个字符串,该字符串返回以下值(我手动删除了这篇文章的值),这很棒:

  

'/ *请勿更改 / var AWIN = {}; AWIN.Tracking = {};   AWIN.Tracking.Sale = {}; / 设置您的交易参数* /   AWIN.Tracking.Sale.amount =“00.00”; AWIN.Tracking.Sale.channel =   “仙”; AWIN.Tracking.Sale.currency =“GBP”; AWIN   .Tracking.Sale.orderRef =“00000”; AWIN.Tracking.Sale.parts =   “默认: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中运作?同样,我们所期待的只是默认:00.00 的部分。

提前致谢

1 个答案:

答案 0 :(得分:1)

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

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

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

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