用替换字符串的函数替换字符串

时间:2015-03-25 09:12:19

标签: javascript regex string

我想找到一个高效且优雅的解决方案来解决这个问题:

我需要通过已替换的函数来替换字符串的子字符串,不区分大小写。

示例:

var highlight = function(inputString, filterString) {
    var regex = new RegExp(filterString, 'gi');
    return inputString.replace(regex, '<b>' + filterString + '</b>');
};

highlight('The input', 't');

如果您在浏览器控制台中运行此功能,那么您将获得:

"<b>t</b>he inpu<b>t</b>"

我的问题是我想保留被替换字符串的原始情况。因此,预期结果将是:

"<b>T</b>he inpu<b>t</b>"

有什么想法吗?

编辑:回复@georg:

  

return inputString.replace(regex, '<b>$&</b>');

2 个答案:

答案 0 :(得分:5)

在替换中使用$&,这意味着“找到了什么”:

var highlight = function(inputString, filterString) {
    var regex = new RegExp(filterString, 'gi');
    return inputString.replace(regex, '<b>$&</b>');
};

x = highlight('The input', 't');
document.write("<pre>" + JSON.stringify(x,0,3));   

其他$...魔法构造,供参考:

enter image description here

MDN

答案 1 :(得分:1)

$&安培;包含与最后一次模式匹配匹配的字符串。

请参考 https://msdn.microsoft.com/en-us/library/ie/3k9c4a32%28v=vs.94%29.aspx 了解更多详情。