我正在尝试创建一个脚本,该脚本在文本中搜索模式,并在找到的字符串周围包裹标签。
$(".shop_attributes td").each(function () {
$(this).html(function(i, html) {
return html.replace(/E[0-9]{3,4}/g, "<strong>$1</strong>");
});
});
这是我使用的代码,它确实找到了我正在寻找的内容,但它实际上做的是生成一个内部带有 1 美元的标签。我希望它做的是将它找到的字符串放入强标签中。 我在这里做错了什么?
您需要先捕获匹配项,然后才能使用它。使用括号:
$(".shop_attributes td").each(function () {
$(this).html(function(i, html) {
return html.replace(/(E[0-9]{3,4})/g, "<strong>$1</strong>");
});
});
可笑的过度简化的JS小提琴演示。
另一种选择是使用 $&
,它代表整个匹配(在其他风格中也$0
):
html.replace(/E[0-9]{3,4}/g, "<strong>$&</strong>");
我还推荐jQuery突出显示插件 - 您也许可以对其进行调整以使用正则表达式,代码非常简单。
将
要捕获的组括在括号中:
/(E[0-9]{3,4})/g