2012-10-11 106 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"