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

您可以将它们全部填充到一个字符类中(匹配类中的任何单个字符)。字符类本身由方括号表示,因此您必须转义里面的那些(这只是部分正确,但这绝对是一个好习惯):

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

外圆括号在那里,因此捕获的值实际上以$1. 在g那里,所有出现的地方都被替换了。

请注意,这不是字符串!不要用". 只需按原样将其作为第一个参数提供replace

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

顺便说一句,您可能应该遍历 DOM 中的所有文本节点并仅将替换应用于这些节点。否则,您可能会将该标记添加到属性值或注释中(或者更糟糕的是,嵌入 JavaScript 或 CSS)。

于 2012-11-23T00:49:01.003 回答