2011-12-08 98 views
2

以下問題發生:替換工作正常,但:所有調查結果都被替換爲第一個查找。 (下面的代碼示例)。JS/RegExp多個替換

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找到精細魚」搜索「鰭」。將「findling找到精細魚」。

這意味着:在某些情況下,大小寫是錯誤的。錯誤在哪裏?

回答

-1

用途:

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

Whew。那很快,很有趣,很好。謝謝! – campino2k

0

試試這個:

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

Here是工作代碼。