2014-01-29 44 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

相關問題