Javascript JS.替换字符串中的PlaceB标记,其中==字符串

Javascript JS.替换字符串中的PlaceB标记,其中==字符串,javascript,regex,replace,Javascript,Regex,Replace,可能重复: 我试图突出显示字符串中与另一个变量值相等的部分 比如说 var string = 'This Is A Test String'; var findWord = 'test'; 结果应该是 'This Is A <b>Test</b> String' 请注意不区分大小写,我需要使用变量来传递“find/Replace word” 我之所以需要这样做,是为了将找到的字符串的确切形式/大小写保持在搜索词的is==处 在PHP中,这是可行的,所以基本上我是在追

可能重复:

我试图突出显示字符串中与另一个变量值相等的部分

比如说

var string = 'This Is A Test String';
var findWord = 'test';
结果应该是

'This Is A <b>Test</b> String'
请注意不区分大小写,我需要使用变量来传递“find/Replace word”

我之所以需要这样做,是为了将找到的字符串的确切形式/大小写保持在搜索词的is==处

在PHP中,这是可行的,所以基本上我是在追求JS的等价物

preg_replace('/('.$search.')/i','<b>$1</b>',$val['name'])
我不擅长正则表达式,这对某些人来说应该很简单。

我建议:

var string = "This is a test string.",
needle = "test",
re = new RegExp(needle, "gi"),
newString = string.replace(re, "<strong>" + needle + "</strong>");
console.log(newString);

编辑以创建更具功能性/可重用的方法:

function formatMatches(el, needle, wrapper) {
    if (!el || !needle) {
        return false;
    }
    else {
        var re = new RegExp(needle, "gi"),
            haystack = el.textContent,
            o = '<' + wrapper + '>',
            c = '</' + wrapper + '>';
        return haystack.replace(re, function(a) {
            return o + a + c;
        });
    }
}

var needle = "test",
    el = document.getElementById('input'),
    wrapper = 'strong';

document.getElementById('result').innerHTML = formatMatches(el, needle, wrapper);

参考资料:

. . . . 编辑:或者,如注释所示,最后一行可以替换为:

var result = str.replace(new RegExp(w, 'gi'), "<b>$&</b>");

这个问题没有显示任何研究成果。请注意给出的答案:这对指针中明显的特殊regexp字符不起作用。请确保转义它们,但不要转义所有内容,因为转义也可以生成特殊标记\d。这将丢弃原始字符串的大小写。啊;不知何故,我没有意识到这是一个要求。更正。这不会丢弃原始字符串的大小写。您不需要在这里使用函数,只需使用$&Excellent,这将非常出色,这是实现这一点的最省时的方法,因为我必须非常快地在大量字符串上执行此操作?啊,很酷,我不知道@本约翰逊:我真的不知道:你可能必须写一个替代方案,并描述不同的解决方案。我想很难打败像这样的内置设备。
var str = 'This Is A Test String';
var w = 'test';

var result = str.replace(new RegExp(w, 'gi'), function(match) {
  return "<b>" + match + "</b>";
});
var result = str.replace(new RegExp(w, 'gi'), "<b>$&</b>");