9

我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签。

$(".shop_attributes td").each(function () {
    $(this).html(function(i, html) {
        return html.replace(/E[0-9]{3,4}/g, "<strong>$1</strong>");
    });
});

这是我使用的代码,它确实找到了我正在寻找的内容,但它实际上所做的是生成一个内部带有 $1 的标签。我期望它做的是将它找到的字符串放入强标签中。我在这里做错了什么?

4

3 回答 3

11

您需要先捕获匹配项,然后才能使用它。使用括号:

$(".shop_attributes td").each(function () {
    $(this).html(function(i, html) {
        return html.replace(/(E[0-9]{3,4})/g, "<strong>$1</strong>");
    });
});

可笑地过度简化的 JS Fiddle 演示

于 2012-11-13T21:16:32.907 回答
4

另一种选择是使用$&,它代表整个匹配(也$0有其他风格):

html.replace(/E[0-9]{3,4}/g, "<strong>$&</strong>");

我还推荐jQuery Highlight Plugin - 您可以调整它以使用正则表达式,代码非常简单。

于 2012-11-13T21:19:30.650 回答
1

将要捕获的组括在括号中:

/(E[0-9]{3,4})/g
于 2012-11-13T21:18:09.890 回答