我有这个功能,用于将文本中给定的关键字替换为相同的关键字,但以粗体显示。
function parseKeywords(text){
var replacedText = text,
var keywords = getStoredData("currentCrisisKeywords").split(',');
$(keywords).each(function(i, kw){
var kWord = kw.replace(/^\s+|\s+$/g, "");
replacedText = replacedText.replace(new RegExp(kWord, 'i'), '<b>'+kWord+'</b>');
});
return replacedText;
}
问题是kWord
可能是“这是一个测试”,而被替换的字符串是“这是一个测试”。我需要保留原始格式,而现在通过用关键字替换它,我无法保留原始格式。
我试着用这种方式没有运气:
replacedText = replacedText.replace(new RegExp(kWord, 'i'), "<b>$1</b>");
您是否知道通过保留原始格式来返回匹配字符串的方法,即使regExp搜索不区分大小写?
由于
答案 0 :(得分:1)
在模式中围绕关键字放置括号以便捕获它,然后您可以在替换字符串中使用$1
来使用匹配的字符串而不是关键字:
var kWord = "(" + kw.replace(/^\s+|\s+$/g, "") + ")";
replacedText = replacedText.replace(new RegExp(kWord, 'i'), '<b>$1</b>');