2012-11-23 264 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

相關問題