2012-11-23 171 views
0

我有HTML这样的例子:摆脱括号,括号和大括号正则表达式和JavaScript

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

}); 

我真的不知道要放什么地方???。我可以在互联网上找到的任何东西都是想要在括号之间进行匹配的人,而不是实际的括号本身。

只是要清楚我想要替换的(){}[]所有实例。

任何帮助将非常感激。

回答

1

你可以将它们全部填入一个字符类(它匹配类中的任何单个字符)。字符类本身是用方括号来表示,所以你将不得不逃离那些内部(即只有部分正确,但它肯定是很好的做法):

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

外圆括号会有那么所捕获的价值实际上最终为$1g在那里,以便所有的事件都被替换。

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

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

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

+0

谢谢,这是完美的。关于你最后的评论:是的,你是对的(不是我知道如何做到这一点)。我之前遇到过一个问题,那就是我以类似于我在这里的方式替换了'/',这显然会干扰HTML结束标记。 – MadScone

+0

@MadScone是原型还是jQuery或其他你正在使用的东西? –

+0

我正在使用jQuery。 – MadScone

相关问题