在javascript中,如何在不覆盖前一个粗体字符串的情况下用粗体文本替换多个字符串?

时间:2017-11-02 23:24:57

标签: javascript string string-matching

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标记,因此它不会有像这样的奇怪行为?

1 个答案:

答案 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"]);