JS заменяет все вхождения строки с помощью переменной

Я знаю, что str.replace(/x/g, "y") заменяет все x в строке, но я хочу сделать это

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

Как я могу использовать переменную в первом аргументе?

Ответ 1

Конструктор RegExp принимает строку и создает из нее регулярное выражение.

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

Если replaceWhat может содержать символы, которые являются специальными в регулярных выражениях, вы можете сделать:

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

Смотрите Есть ли функция RegExp.escape в Javascript?