Javascript:如何用html代码替换所有匹配的字符串
这是我目前的代码:Javascript:如何用html代码替换所有匹配的字符串,javascript,regex,highlight,replaceall,Javascript,Regex,Highlight,Replaceall,这是我目前的代码: var filter = ['F', 'p']; var table_data = ['F1', 'F-BAPP', 'ABC']; table_data.forEach(function(d) { var final_value = addClass(d, filter); console.log(final_value); }); function addClass(text, filters) { if (filters === '')
var filter = ['F', 'p'];
var table_data = ['F1', 'F-BAPP', 'ABC'];
table_data.forEach(function(d)
{
var final_value = addClass(d, filter);
console.log(final_value);
});
function addClass(text, filters)
{
if (filters === '')
{
return text;
}
String.prototype.replaceAll = function(FindText, RepText)
{
regExp = new RegExp(FindText, "gi");
return this.replace(regExp, RepText);
};
filters.forEach(function(kw)
{
text = (text + "").replaceAll(kw, "<span class='_p-filter-matched'>" + kw + "</span>");
});
return text;
}
<代码>var过滤器=['F',p'];
var表_数据=['F1','F-BAPP','ABC'];
表_数据forEach(功能(d)
{
var final_值=addClass(d,过滤器);
console.log(最终_值);
});
函数addClass(文本、过滤器)
{
如果(过滤器=='')
{
返回文本;
}
String.prototype.replaceAll=函数(FindText、RepText)
{
regExp=新的regExp(FindText,“gi”);
返回此.replace(regExp,RepText);
};
过滤器。forEach(功能(kw)
{
text=(text+).replaceAll(kw,“+kw+”);
});
返回文本;
}
我希望最终_值的输出如下所示:
<span class='_p-filter-matched'>F</span>1
<span class='_p-filter-matched'>F</span>-BA<span class='_p-filter-matched'>P</span><span class='_p-filter-matched'>P</span>
1. <span> becomes <s<span class='_p-filter-matched'>p</span>an.
2. F-BAPP becomes f-BApp.
F1
F-BAPP
但有两个问题:
<span class='_p-filter-matched'>F</span>1
<span class='_p-filter-matched'>F</span>-BA<span class='_p-filter-matched'>P</span><span class='_p-filter-matched'>P</span>
1. <span> becomes <s<span class='_p-filter-matched'>p</span>an.
2. F-BAPP becomes f-BApp.
1。变成您的主要问题是,您正在迭代过滤器
数组,并一次替换一个。因此,当您将F
替换为“+kw+”
时,您将在下一个过滤器p
将要替换的字符串上添加多个p
字符
在下一种方法中,我使用方法的(函数(replacement)
)一次性完成所有替换,同时使用一个查找所有过滤器的正则表达式(例如:正则表达式F|p
)
方法:
var过滤器=['F','p'];
var表_数据=['F1','F-BAPP','ABC'];
表U data.forEach(函数(d)
{
var final_值=addClass(d,过滤器);
console.log(最终_值);
});
函数addClass(文本、过滤器)
{
如果(!filters.length)
返回文本;
String.prototype.replaceAll=函数(过滤器、RepText、令牌)
{
regExp=newregexp(filters.join(“|”)gi);
返回此。替换(regExp,(match)=>
{
返回RepText.replace(令牌,匹配);
});
};
让repText=“*过滤器*”;
let token=“*过滤器*”;
返回text.replaceAll(过滤器、repText、令牌);
}
你能澄清一下你到底想做什么吗?请编辑您的问题。