2014-01-29 4 views
2

У меня есть регулярное выражение в 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> 

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

ответ

4

Использование the RegExp constructor:

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

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

+0

Спасибо за быстрый ответ, у меня есть еще один вопрос, я должен заменить его на string1, где string1 = «Everything», что shoud я делаю в этом случае ..? – DEV

+0

Ницца. Но, если возможно, я бы пропустил строку var и сразу же создал var как RegExp, чтобы избежать того, что упоминается в примечании в dystroy. То есть 'var theRE = новый RegExp ('something', 'ig'); ... el.innerHTML = el.innerHTML.replace (theRE, "Everything"); '. Это также позволяет повторно использовать регулярное выражение при более низкой стоимости (производительность). – ClasG

Смежные вопросы