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 demo

于 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 に答える