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