简单的JavaScript正则表达式替换不适用于带方括号的令牌?

时间:2016-11-05 03:39:07

标签: javascript regex

我正在尝试在字符串中替换令牌“[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]

2 个答案:

答案 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);