我正在尝试在字符串中替换令牌“[RANDOMNUMBER]”,但我的代码无效?在检查在线验证工具时,正则表达式显示为有效吗?我知道它必须是一个愚蠢的错误,但我没有看到它?
function detokenizeTags(imgSrc){
var rn = Math.random() + "",
rnd = rn * 10000000000000;
imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);
return imgSrc;
}
示例输入字符串://ad.amgdgt.com/ads/?t=ap&px=79079&rndn=[RANDOMNUMBER]
答案 0 :(得分:1)
问题在于替换不会改变原始字符串。
imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);
需要
imgSrc = imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);
function detokenizeTags(imgSrc){
var rn = Math.random() + "",
rnd = rn * 10000000000000;
return imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);
}
var str = "//ad.amgdgt.com/ads/?t=ap&px=79079&rndn=[RANDOMNUMBER]";
console.log(str, detokenizeTags(str));
答案 1 :(得分:0)
.replace
不修改字符串,它返回一个新字符串。而不是:
imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);
return imgSrc;
尝试:
return imgSrc.replace(/\[RANDOMNUMBER\]/g,rnd);