[英]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.