[英]Get all P Tags in the UL tags, Javascript Regex
我竭盡全力試圖為此找到一個正則表達式。 我有以下無效的html:
...some html tags above...
<p>Bullet points:</p>
<ul>
<li/>
<p>point 1</p>
<li/>
<p>point 2</p>
</ul>
<p>Other Bullet points:</p>
<ul>
<li/>
<p>point 3</p>
<li/>
<p>point 4</p>
</ul>
...some html tags below...
我正在嘗試獲取<ul></ul>
標記內的<p></p>
標記之間的所有數據,並將其替換為有效的li標記。 即我計划將以下內容替換為以下內容:
...some html tags above...
<p>Bullet points:</p>
<ul>
<li>point 1</li>
<li>point 2</li>
</ul>
<p>Other Bullet points:</p>
<ul>
<li>point 3</li>
<li>point 4</li>
</ul>
...some html tags below...
為此,您應該執行2 RegeXp,首先獲取UL標簽的內部HTML,然后將P標簽替換為LI標簽。
首先獲取所有UL
標簽:
var UL_tags=/<ul>([\s\S]*?)<\/ul>/g
// [\s\S] Mean any char including new lines.
現在,您所要做的就是:
new_html=myHtml.replace(UL_tags,function(r0,innerHTML){
return innerHTML.replace(/<p>/g,'<ul>').replace(/<\/p>/g,'</ul>')
})
請注意,它不適用於嵌套的UL標簽(UL內部的UL)
更新:現在,您需要支持UL內部的屬性,例如: <ul class...>
因此我們需要忽略標簽屬性,因此Regexp需要稍微復雜一些(對不起):
var UL_tags=/<ul[^>]*?>([\s\S]*?)<\/ul>/g
// [^>] Mean any char except closing tag.
在jQuery中嘗試一下:
$('p').each(function(index){
p_str = $(this).text();
....
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.