繁体   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