function replaceKeys(inputString, keys){
for (var i = 0; i < keys.length; i++) {
var t = keys[i];
if (t) inputString= inputString.replace(new RegExp(t, 'gi'), '<strong>' + t + '</strong>');
}
return s;
}
使用上面的javascript方法,我试图根据&#34;键列表&#34;来加粗给定字符串中的所有文本。或字符串部分。
示例输入:
keys = [&#34; man&#34;,&#34; str&#34;]
inputString =&#34;强壮的男人&#34;
预期输出:
str ong man
不幸的是,输出正在取代&#34; str&#34;部分强标签也是如此。意味着输出变为
&lt; str ong&gt; str strong&gt; ong man 。
是否有正则表达式或其他方法,以便我可以忽略字符串中的html标记,因此它不会有像这样的奇怪行为?
答案 0 :(得分:1)
您可以通过定义占位符而不是直接使用<strong>
标记来执行此操作:
function replaceKeys(inputString, keys){
var placeholder = '!!';
var s = inputString.replace(new RegExp(/strong>/gi),placeholder);
for (var i = 0; i < keys.length; i++) {
var t = keys[i];
if (t) s = s.replace(new RegExp(t, 'gi'), '<' + placeholder + t + '</' + placeholder );
}
return s.replace(new RegExp(placeholder,'g'),'strong>');
}
replaceKeys("strong man",["man", "str"]);