JS使用变量替换所有出现的字符串

时间:2013-07-23 20:06:30

标签: javascript string variables replace

我知道str.replace(/x/g, "y")替换了字符串中的所有x,但我想这样做

function name(str,replaceWhat,replaceTo){
    str.replace(/replaceWhat/g,replaceTo);
}

如何在第一个参数中使用变量?

2 个答案:

答案 0 :(得分:37)

RegExp构造函数接受一个字符串并从中创建一个正则表达式。

function name(str,replaceWhat,replaceTo){
    var re = new RegExp(replaceWhat, 'g');
    return str.replace(re,replaceTo);
}

如果replaceWhat可能包含正则表达式中特殊的字符,则可以执行以下操作:

function name(str,replaceWhat,replaceTo){
    replaceWhat = replaceWhat.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    var re = new RegExp(replaceWhat, 'g');
    return str.replace(re,replaceTo);
}

请参阅Is there a RegExp.escape function in Javascript?

答案 1 :(得分:1)

替换有一个替代形式,它接受3个参数并接受一个字符串:

function name(str,replaceWhat,replaceTo){
    str.replace(replaceWhat,replaceTo,"g");
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace