0

次の例のような HTML があります。

<div class="code">
  function something(a, b) 
  {
     return 0;
  }
</div>

spanすべての括弧、角括弧、および中括弧をof classで囲みたいと思いますbrackets。このような:

<div class="code">
  function something<span class="brackets">(a, b<span class="brackets">)</span> 
  <span class="brackets">{</span>
     return 0;
  <span class="brackets">}</span>
</div>

これまでの私の JavaScript/jQuery:

$('.code').each(function() {

  $(this).html(
    $(this).html().replace("???", '<span class="brackets">$1</span>')
  );

});

の代わりに何を入れればいいのか本当にわかりません???。私がインターネットで見つけることができるのは、実際のブラケット自体ではなく、ブラケット間で一致させたい人です.

(明確にするために、)、 、{}[およびのすべてのインスタンスを置き換えたいと思います]

どんな助けでも大歓迎です。

4

1 に答える 1

1

それらすべてを文字クラスに詰め込むことができます(クラス内の任意の1文字に一致します)。文字クラス自体は角括弧で示されているため、内部のものをエスケープする必要があります (これは部分的にしか当てはまりませんが、間違いなく良い習慣です)。

/([(){}\[\]])/g

外側の丸括弧は、キャプチャされた値が実際に$1. gが存在するので、すべてのオカレンスが置き換えられます。

これは文字列ではないことに注意してください。で囲まないでください"。それをそのままの最初の引数replaceとして指定するだけです。

...html.replace(/([(){}\[\]])/g, '<span class="brackets">$1</span>')

ところで、おそらく DOM 内のすべてのテキスト ノードを反復処理し、それらにのみ置換を適用する必要があります。そうしないと、そのタグを属性値またはコメントに追加する可能性があります (さらに悪い場合は、JavaScript または CSS が埋め込まれます)。

于 2012-11-23T00:49:01.003 に答える