2014-01-29 41 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中没有标准功能,但很容易编写和查找(这里是one)。

+0

感谢您的快速回复,我还有一个问题,假设我必须将其替换为string1,其中string1 =“Everything”,在这种情况下我做了什么?..? – DEV

+0

不错。但是,如果可能的话,我会跳过字符串var并立即创建var作为RegExp,以避免在注释中提到的错误。即'var theRE = new RegExp('something','ig'); ... el.innerHTML = el.innerHTML.replace(theRE,“Everything”);'。这也允许您以较低的成本重复使用正则表达式(性能明智)。 – ClasG

相关问题