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>");