使用JS / RegExp进行多次替换

时间:2011-12-08 15:06:21

标签: javascript jquery html regex

发生以下问题:替换按预期工作但是:所有发现都替换为第一个发现。 (代码如下)。

target =包含待突出显示字符串的输入字段; newCityString = html代码,应该替换

/**
*   Highlighting for Search results (just demo)
*   TODO: This needs some work to replace the case-correct texts
*/
search = new RegExp( $(target).val() , 'gi' );
matches = search.exec(newCityString);
for( match in matches ) {
    _this = new RegExp( matches[ match ], 'gi');
    newCityString = newCityString.replace( 
        _this,
        ('<span class="hl" style="background-color:yellow">' + matches[ match ] + '</span>') 
    );
};

示例:

“Findling发现一条精致的鱼”,寻找“鳍”将是“找到一条好鱼”。

这意味着:在某些情况下,大写将是错误的。哪里出错了?

2 个答案:

答案 0 :(得分:0)

试试这个:

search = new RegExp($(target).val(), 'gi');
newCityString = newCityString.replace(search, function(match) {
  return '<span class="hl" style="background-color:yellow">' + match + '</span>';
});

Here 是工作代码。

答案 1 :(得分:-1)

使用:

search = new RegExp( $(target).val() , 'gi' );
newCityString = newCityString.replace(search,function(substr){
    return '<span class="hl" style="background-color:yellow">' + substr + '</span>';
});