使用正则表达式和 JavaScript 转义括号、括号和大括号



我有像这个例子这样的HTML:

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

bracketsspan包围所有括号、括号和大括号。喜欢这个:

<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>')
  );
});

我真的不知道该用什么代替???.我在互联网上能找到的任何东西都是人们想要在括号之间匹配,而不是实际的括号本身。

为了清楚起见,我想替换所有(){}[]的实例。

任何帮助将不胜感激。

您可以将

它们全部填充到一个字符类中(该字符与类中的任何单个字符匹配)。字符类本身用方括号表示,因此您必须转义其中的字符类(这只是部分正确,但这绝对是很好的做法):

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

外部圆括号在那里,因此捕获的值实际上最终为 $1 .g在那里,以便替换所有匹配项。

请注意,这不是一个字符串!不要用"包围它。只需将其作为第一个参数提供给replace

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

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

最新更新