Jquery替换br标签

时间:2015-06-03 00:43:08

标签: javascript jquery text

我的文字包含多个换行标记,如此

<br></br>

和几个双线换行如此

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

我想摆脱单<br></br>,但我想保留双重的.filter("<br></br>") 使用jquery或Jscript我怎么能告诉它这样做 当我使用<br></br><br></br>时它没有用,因为它摆脱了两者

有没有办法用replaceWith替换Public - may be cached in public shared caches (proxies and users) Private - may only be cached in private cache (users only) no-Cache - may not be cached no-Store - may be cached but not archived 的实例?或者其他一些方式

2 个答案:

答案 0 :(得分: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上执行此操作。

答案 1 :(得分:0)

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

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

console.log($("body").html());
&#13;
<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>
&#13;
&#13;
&#13;