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方法,我已经尝试根据“键”或字符串部分的列表将给定字符串中的所有文本加粗。
输入示例:
keys = [“ man”,“ str”]
inputString =“ strong man”
预期的输出:
坚强的人
不幸的是,输出也替换了强标签的“ str”部分。意味着输出变为
strstrong>老兄。
是否有正则表达式或其他方法,以便我可以忽略字符串中的html标签,因此它没有像这样的怪异行为?
最佳答案
您可以通过定义一个占位符而不是直接使用<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"]);