我想删除在结束<br>
代码之前出现的所有</p>
代码。
例如,这没关系:
<p>Bla bla bla <br>
bla bla
</p>
但这是不确定:
<p>Bla bla bla <br>
</p>
换句话说,每次我都有:
<br> + white space or tab or new line or whatever providing no content + </p>
然后,我想删除<br>
。
如何使用javascript Regex实现这一目标? (或任何其他JavaScript方式)
答案 0 :(得分:1)
您可以执行以下操作。如果br
是最后一个孩子将其删除,则最后一个孩子的其他孩子为空,然后将其删除
$('p').find('br:last').filter(function () {
return !this.nextSibling || (this.nextSibling.nodeType == 3 && !this.nextSibling.nextSibling && !this.nextSibling.nodeValue.trim())
}).remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Bla bla bla
<br/>bla bla
</p>
<p>Bla bla bla
<br></p>
<p>Bla bla bla
<br>
</p>
答案 1 :(得分:1)
试试这个:
遍历每个p
,
得到它的HTML(不是文本,以获得<br>
元素),
使用正则表达式替换<br>
为空字符串(在<br>
之前匹配</p>
)
用更新的html替换原始文件。
$('p').each(function(){
var p = $(this);
p.html(p.html().replace(/(<br)\s?\/?>\s?$/g,''));
});
REGEX:
/(<br)\s?\/?>\s?$/g
匹配:<br>, <br/>, <br />, <br >
答案 2 :(得分:0)
正则表达式如下:
/<br>\s*<\/p>/g
首先表示"<br>"
+任意空格或换行符+ "</p>"
然后我们使用str.match()
。要删除<br>
,我们将其替换为空字符串。请注意,test1
在test2
执行时无法正常工作:
var test1 = "<p>Bla bla bla <br> \
bla bla \
</p>";
var test2 = "<p>Bla bla bla <br> \
</p>";
if(test1.match(/<br>\s*<\/p>/g))
test1 = test1.replace("<br>","");
if(test2.match(/<br>\s*<\/p>/g))
test2 = test2.replace("<br>","");
alert(test1); // <br> still there
alert(test2);// <br> is gone
&#13;