2015-06-03 74 views
1

我有几个换行符标记文本,像这样jQuery的更换BR标签

<br></br> 

和几双换行符像这样

<br></br><br></br> 

我想摆脱单一<br></br>的,但我想要保持双重的 使用jQuery或Jscript我怎么能告诉它做到这一点 当我使用.filter("<br></br>")它没有工作,因为它摆脱了两个

有没有办法用replaceWith替换<br></br><br></br>的实例?或者一些其他的方式

+1

你能告诉我你想要的结果的例子吗?您可以将所有'

'替换为'
'。那是你要的吗?尽管你可以使用javascript [replace()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace)方法。 –

+1

@RickHitchcock:的确如此。但是,它是有效的XHTML;而OP没有在问题中指定文档类型。不过,问题不在于渲染,而在于文本处理。 – Amadan

回答

3

最简单的方法就是三个步骤:

text = text. 
    replace(/<br><\/br><br><\/br>/g, '____MAGICMARKER____'). 
    replace(/<br><\/br>/g, ''). 
    replace(/____MAGICMARKER____/g, '<br></br><br></br>') 

希望____MAGICMARKER____从来都不是,也将永远,是你的文本的一部分。另一种可能性(和更好的,万无一失一个)将是:

text = text.replace(/(<br><\/br>)+/g, function(all, once) { 
    if (all == once) return ""; 
    return all; 
}); 

注意,这是所有写假设的问题你的前提是正确的:你有一个文本(即一个字符串)。如果您有文档片段,那么您想在其innerHTML上执行此操作。

0

利用html尝试,RegExp/<br><br>+[\s|\n]/g匹配<br><br>后跟空格字符或换行字符

$("body").html(function(i, html) { 
 
    return html.replace(/<br><br>+[\s|\n]/g, "") 
 
}); 
 

 
console.log($("body").html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<body> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
<br></br> 
 
and several double line breaks like so 
 

 
<br></br><br></br> 
 
</body>