2012-10-11 151 views
3

我有一個簡單的正則表達式搜索和替換功能,想知道是否有去敏感的情況下,在不區分大小寫替換的好辦法?下面的例子:案例與區分大小寫不敏感的搜索替換

function filter(searchTerm) { 
    var searchPattern = new RegExp(searchTerm, 'ig'); 
    .... 
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">' + searchTerm + '</span>'); 

在函數頂部的搜索詞可能在它首都,我想讓它任何字符串上或在其較低的匹配,因此,「i」標誌。

我做了更換,因爲它需要原始SEACH字符串(可以是任意組合),並使用一個替代中可能有不同的格式,當結束了奇怪的結果。

標識真的很想保留原來的格式,並添加周圍的跨度。我的方法是最好的方法嗎?如果是,你可以使用組,你可以在Perl中一樣嗎?例如

s/ \(=\+\) /\1/g 

我使用類似類型的語法和示例的企圖形成網只能導致文本字符串替換

回答

4
function filter(searchTerm) { 
    var searchPattern = new RegExp('('+searchTerm+')', 'ig'); 
    .... 
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">$1</span>'); 
    ... 
} 
+0

偉大的答案!精美的作品。對於其他的正則表達式的假人我一樣:各地正則表達式的其餘部分的打開和關閉括號是很重要的,否則你剛剛結束了「$ 1」的字面輸出。 – Michael

3

您可以使用組,但語法稍有不同。嘗試是這樣的:

var str = 'this is a dog eat Dog eat DOG world' 
str = str.replace(/(dog)/gi, '<span>$1</span>') 

// str is now: "this is a <span>dog</span> eat <span>Dog</span> eat <span>DOG</span> world"