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?
Ответ 2
Заменить имеет альтернативную форму, которая принимает 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