7

我有一个简单的正则表达式搜索和替换功能,想知道是否有一种好方法可以在不区分大小写的搜索中进行区分大小写的替换?下面的例子:

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

函数顶部的搜索词可能有一个大写字母,我想让它匹配任何带有大写或小写的字符串,因此是“i”标志。

在进行替换时,我最终得到了奇怪的结果,因为它采用原始搜索字符串(可以是任何混合)并在可能存在不同格式的情况下使用该替换。

我真的很喜欢保留原始格式并在其周围添加跨度。我的方法是最好的方法吗?如果是,你能像在 Perl 中那样使用组吗?例如

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

我尝试使用类似类型的语法和示例形成网络只会导致文字字符串替换

4

2 回答 2

8
function filter(searchTerm) {
    var searchPattern = new RegExp('('+searchTerm+')', 'ig');
    ....
    textToCheck = textToCheck.replace(searchPattern, '<span class="searchMatchTitle">$1</span>');
    ...
}
于 2012-10-11T12:43:27.970 回答
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"
于 2012-10-11T12:42:57.900 回答