如何从字符串中删除尾随html中断?

时间:2011-11-08 19:40:27

标签: javascript jquery

我下面有一个字符串,我想删除尾随的但是我正在努力。有什么帮助吗?

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 个答案:

答案 0 :(得分:13)

如果要删除所有尾随<br>,请使用量词:

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

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

DEMO

答案 1 :(得分:0)

如果它是HTML元素的内容,您可以使用jQuery删除元素:

$('#container').children('br').last().remove();

如果它是一个字符串,你可以做这样的事情(仍然利用jQuery):

var cleaner = $('<div />').html(mystring);
cleaner.children('br:last-child').remove();
mystring = cleaner.html();

我更倾向于拆分字符串或当前的RegEx,因为您没有像以下那样处理BR标记的情况:<br />

http://jsfiddle.net/TTg3p/

答案 2 :(得分:0)

试试这个:

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

demo :)

答案 3 :(得分: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),所以你的正则表达式不匹配?

答案 4 :(得分: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>