我有像这个例子这样的HTML:
<div class="code">
function something(a, b)
{
return 0;
}
</div>
我想用类brackets
的span
包围所有括号、括号和大括号。喜欢这个:
<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)。