Регулярное выражение не работает с именем строки

У меня есть регулярное выражение в javascript, который не работает. Мой код...

JavaScript:

function doit()
 {
 var string="something";
 var el=document.getElementById("monu");
 el.innerHTML = el.innerHTML.replace(/(string)/ig,"Everything");
 }

HTML:

<div id="monu">something is better than nothing</div>
 <button onclick="doit();">replace</button>

В функции заменить, если я использую строку как шаблон, он не работает. Как я могу заставить его работать... любое предложение..

1 ответ

Используйте конструктор RegExp:

el.innerHTML = el.innerHTML.replace(new RegExp(string,'ig'),"Everything");

Обратите внимание, что если вы хотите заменить строку, содержащую специальные шаблоны регулярных выражений, не интерпретируя их как шаблоны регулярных выражений (например, вы хотите точно заменить ".*"), Вам необходимо избежать строки. К сожалению, в JavaScript нет стандартной функции для JavaScript, но ее легко написать и найти (здесь один).

licensed under cc by-sa 3.0 with attribution.