我建议:
var string = "This is a test string.",
needle = "test",
re = new RegExp(needle, "gi"),
newString = string.replace(re, "<strong>" + needle + "</strong>");
console.log(newString);
JS 小提琴演示。
请注意,我使用<strong></strong>
而不是<b></b>
(故意),当然,您可以使用您喜欢的任何元素类型。此外,gi
标志:
g
用于全局搜索,而不是简单地在第一次匹配时停止,并且
i
是不区分大小写的,所以'test'
会匹配Test
,tESt
依此类推...
编辑以保留匹配字符串/子字符串的大写:
var string = "This is a Test string.",
needle = "test",
re = new RegExp(needle, "gi"),
newString = string.replace(re, function(a,b){
return "<strong>" + a + "</strong>";
});
document.getElementById('input').appendChild(document.createTextNode(string));
document.getElementById('result').innerHTML = newString;
JS 小提琴演示。
编辑以创建更实用/可重用的方法:
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);
JS 小提琴演示。
参考: