簡體   English   中英

用javascript中的regExp替換

[英]Replace with regExp in javascript

我有這樣的替換問題:

我有一個數組測試:

test: Object
    boolean: "true"
    integer: "0"
    values|+|0: "option_1"
    values|+|1: "option_2"

然后我像這樣解析:

for(var data in test){
   for(var input in test[data]){
   var input_aux = input.split('|+|');
   if(input != ''){
      $('table#'+table_id+' tbody td.'+input_aux[0]+' small').each(function(){ 
       var text_highlighted = $(this).text().replace(new RegExp('(' + test[table][input] + ')', 'gi'), '<b>$1<\/b>');
      $(this).html(text_highlighted);
    }}}

我要完成的工作是匹配該表中與option_1之類的數組中的數據完全相同的option_1 ,並將其html更改為<b>option_1</b>

而且工作正常,我的問題就像當我具有相同的鍵但值不同(如上例中所示)時,它將僅突出顯示option_2 ,並且不明白為什么,有什么想法嗎?

問題是即使沒有匹配項,您也要進行替換。 因此,您正在閱讀所有元素的text()並將其替換為該文本。 因此,您將清除所有現有的html。

因此,在進行替換之前,請先檢查是否存在匹配項。

var re = new RegExp('(' + test[table][input] + ')', 'gi');
var txt = $(this).text();
if (txt.match(re)) {
    var text_highlighted = txt.replace(re, '<b>$1<\/b>');
    $(this).html(text_highlighted);
}

另一種選擇是使用包含選擇器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM