【问题标题】:Javascript - RegExp in replace return matched stringJavascript - 替换中的正则表达式返回匹配的字符串
【发布时间】:2015-05-17 03:18:52
【问题描述】:

我有这个函数,可以用相同的关键字替换文本中的给定关键字,但以粗体显示。

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

谢谢

【问题讨论】:

  • 你能解释一下with no luck吗?

标签: javascript regex


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-30
    • 2013-11-04
    • 2012-01-25
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多