如何从字符串中去除HTML结尾换行符?

4
我有一个字符串,想要去掉末尾的
标签,但是我不知道该怎么做。请帮忙提供一些帮助吗?
This is a string<br>    
next line<br>

因此,在我的函数之后,字符串应该是:
This is a string<br>
next line

做以下代码似乎不起作用。 好吧,它能够运行但是没有清除掉末尾的两个换行符。
mystring=mystring.replace(/<br>$/,''); 

所以,如果我的字符串实际上是:
This is a string<br>
next line<br>
<br>

那么上面的代码只是返回了。
This is a string<br>
next line
<br>
5个回答

14

如果你想要移除所有末尾的 <br>,那么可以使用量词:

/(<br>\s*)+$/

\s匹配任何空格字符,所以即使在连续的<br>之间存在换行符,它仍然会匹配。

演示


/(<br\s*\/?\s*>\s*)+$/ 这个正则表达式可以处理更多的情况,例如 <br/>, <br />, <br / >。 - manojchowdary27

1
如果它是HTML元素的内容,您可以使用jQuery来删除该元素:
$('#container').children('br').last().remove();

如果它是一个字符串,你可以这样做(仍然利用jQuery):
var cleaner = $('<div />').html(mystring);
cleaner.children('br:last-child').remove();
mystring = cleaner.html();

我更喜欢这种方法,而不是在字符串上进行分割或使用当前的正则表达式,因为你没有处理像这样的BR标签:<br />

http://jsfiddle.net/TTg3p/


0

试试这个:

mystring.split('<br>').slice(0,-1).join('<br>');

演示 :)


0

我测试了你的代码,它似乎可以工作。我将以下内容粘贴到一个文件中,然后在Firefox中查看,并单击查看源代码。第二个br在源代码中不可见。

<html>
<body>
<script>
var mystring = 'This is a string<br>\n next line<br>'
mystring=mystring.replace(/<br>$/,''); 
document.write(mystring);
</script>
</html>

也许你的 mystring 变量在 br 标签后面有一个实际的换行符 (\n),所以你的正则表达式没有匹配成功?

是的。我刚意识到它在工作。但我的问题是有多个尾随换行符。糟糕。 - Mike
@Mike:所以你想要删除所有尾随的<br>吗?那么使用量词:/(<br>\s*)+$/ - Felix Kling

0
如果您想删除元素内最后一个尾随的<br>,可以使用以下代码:

const element = document.getElementById('element')
console.log('Before:', element.innerHTML)

const last = element.childNodes[element.childNodes.length - 1]
if (last.tagName === 'BR') last.remove()
console.log('After:', element.innerHTML)
<div id="element">Some text<br>other text<br></div>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接