2014-02-27 20 views
0

我有一些HTML內容...JavaScript的正則表達式的HTML

<p>{{Specifications}}</p> 
<p>some content down here</p> 
<p>{{/Specifications}}</p> 

<p>{{Photos}}</p> 
<h2>some content down here</h2> 
<p>some content down here</p> 
<p>some content down here</p> 
... 
<p>{{/Photos}}</p> 

通過jQuery我想每個陣列設置的回報{{*}}值和中包含的HTML在兩個獨立的變量,這樣我可以將它放入一些div等,並動態地將它變成產品頁面的標​​籤。

一旦我得到的正則表達式來折騰它到一個數組我可以將其放入HTML等,這只是我與掙扎的正則表達式:P

+1

如果你在控制原始的html,爲什麼不把它正確地格式化呢?可以使用* section *標記或用css類標記標題* p *標記... –

+0

使用正則表達式解析HTML?我討厭成爲這樣做的人:http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html。那個html是鬍鬚模板嗎? – StuperUser

+0

哈哈,因爲我們正在使用商店cms,使用戶能夠編輯1塊產品的文本,我試圖讓客戶能夠通過編輯器快速方便地添加附加信息選項卡,而無需知道如何編碼; ) –

回答

0

答案是不使用正則表達式。

由於您已經在使用jquery,它使用sizzle來使用css選擇器從dom(或某些html)中選擇元素。

既然你有超過標記控制了你可以

<p>{{Photos}}</p> 
<h2>some content down here</h2> 
<p>some content down here</p> 
<p>some content down here</p> 
... 
<p>{{/Photos}}</p> 

進入轉:

<div class="section" data-section-name="photos"> 
    <p class="section-tag start">{{Photos}}</p> 
    <h2>some content down here</h2> 
    <p>some content down here</p> 
    <p>some content down here</p> 
    ... 
    <p class="section-tag end">{{/Photos}}</p> 
</div> 

然後你可以選擇部分使用

$('div.section[data-section-name="' + someVar + '"]); 

然後使用jQuery刪除'.section-tag'並且你有你需要的標記,你也可以刪除<p>{{*}}</p>標籤,如果它們僅用於劃分部分,則可以使用html打開和關閉標籤,而不是解析用於打開和關閉部分的其他標記。