Javascript - RegExp in replace返回匹配的字符串

时间:2015-05-16 19:15:10

标签: javascript regex

我有这个功能,用于将文本中给定的关键字替换为相同的关键字,但以粗体显示。

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搜索不区分大小写?

由于

1 个答案:

答案 0 :(得分:1)

在模式中围绕关键字放置括号以便捕获它,然后您可以在替换字符串中使用$1来使用匹配的字符串而不是关键字:

var kWord = "(" + kw.replace(/^\s+|\s+$/g, "") + ")";
replacedText = replacedText.replace(new RegExp(kWord, 'i'), '<b>$1</b>');