2013-09-22 27 views
1

CONTENTEDITABLE格無法跨越包裹HTML文本用單或雙引號

var1 = 'x'; 
var2 = someVar 

目標

<span class="frag">var1 = 'x'</span>; 
<span class="frag">var2 = someVar</span>; 

JS

$('#board_code_dup').children().each(function (index, child) { 
    var text = $(child).html(); 

    //HOW TO DO THIS RIGHT? 
    text = text.replace(/([A-Za-z0-9_]+\s*=\s*[A-Za-z0-9&'"]+)/g, '<span class="frag">$1</span>'); 
}); 

我如何在這裏使用HTML實體&quot; &apos;而不是' ",以便我可以正確包裝它?

+1

我不知道你想什麼來完成,但使用HTML實體,而不是'''和'「' ,你可以使用'(?:[A-Za-z0-9&] | " | ')'或'(?:[A-Za-z0-9&] |&(?: quot |);)' –

+1

你不是創建一個屬性節點,所以你不需要使用'''或'"'。除此之外,使用正則表達式解析JavaScript代碼的想法會失敗,除非在* very * tr個案。 JavaScript源代碼更具表現力,那麼正則表達式能夠做什麼。 – 2013-09-22 12:25:08

回答

0

這是我已經試過"$('#board_code_dup').text()",分裂它「\ n」,而不是..

將實體轉換像源引號或雙引號幕後。這可能與reg-exp匹配。

var result = $('#board_code_dup').text().split("\n").map(function (el, idx){ 
        return el.replace(/\s*;\s*$/,'').replace(/(\w+\s*=\s*[\w&"']+)/g,'<span class="frag">$1</span>'); 
      }); 
alert(result.join('')); 

的js小提琴Here

我希望這將有助於..