我正在尝试从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