簡體   English   中英

在UL標簽Javascript Regex中獲取所有P標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM