如何解决此 RegExp 问题并在 GTM 中出现 JavaScript 编译器错误?
How do I fix this RegExp problem with JavaScript Compiler Error in GTM?
尝试发布新的 GTM 版本时,我遇到了我未编辑的变量的错误(它们曾经有效,现在显示错误)。
Error message:JavaScript Compiler Error Error at line 4, character 18:
Cannot convert ECMASCRIPT_2018 feature "RegExp Lookbehind" to targeted
output language.
代码:
function(){
var myRegexp = /(?<=(\/.*\/cat\/)).*?(?=\/)/g; //regex rule
var result = document.URL.match(myRegexp);
if(result !== null){
return result[0];
}else{
return null;
}
}
Lookbehind 是一个相当新的功能 - 只有一些浏览器支持它,并且它不能完全被转译(据我所知),因此出现错误。使用标准匹配而不是lookbehind,cat/
之后的部分有一个捕获组,第一个捕获组return:
var pattern = /\/.*\/cat\/([^/]+)/;
var match = document.URL.match(pattern);
return match
? match[1]
: null;
尝试发布新的 GTM 版本时,我遇到了我未编辑的变量的错误(它们曾经有效,现在显示错误)。
Error message:JavaScript Compiler Error Error at line 4, character 18: Cannot convert ECMASCRIPT_2018 feature "RegExp Lookbehind" to targeted output language.
代码:
function(){
var myRegexp = /(?<=(\/.*\/cat\/)).*?(?=\/)/g; //regex rule
var result = document.URL.match(myRegexp);
if(result !== null){
return result[0];
}else{
return null;
}
}
Lookbehind 是一个相当新的功能 - 只有一些浏览器支持它,并且它不能完全被转译(据我所知),因此出现错误。使用标准匹配而不是lookbehind,cat/
之后的部分有一个捕获组,第一个捕获组return:
var pattern = /\/.*\/cat\/([^/]+)/;
var match = document.URL.match(pattern);
return match
? match[1]
: null;