29

这是javascript中的某种可变内容:

    <meta charset="utf-8">

    <title>Some Meep meta, awesome</title>




    <-- some comment here -->
    <meta name="someMeta, yay" content="meep">

</head>

我想将多换行符(未知数)减少到一个换行符,而其余的格式仍然保持不变。这应该javascriptregex.

我对制表器有问题或保留格式。

4

4 回答 4

89

试试这个:

text.replace(/\n\s*\n/g, '\n');

这基本上会寻找两个换行符,中间只有空格。然后它用一个换行符替换它们。由于全局标志g,对于每个可能的匹配都会重复此操作。

编辑:

是否可以留下双换行符而不是单个换行符

当然,最简单的方法是只查找三个换行符并将它们替换为两个:

text.replace(/\n\s*\n\s*\n/g, '\n\n');

如果您想在其中一行上保留空格(无论出于何种原因),您也可以这样做:

text.replace(/(\n\s*?\n)\s*\n/, '$1');
于 2012-06-10T00:21:00.797 回答
16
myText = myText.replace(/\n{2,}/g, '\n');​​​​​​​

看演示

于 2012-06-10T00:23:11.397 回答
3

给定以下内容(请记住对 HTML 实体进行编码,例如<,>和(当然还有其他)&):

<pre>
&lt;head&gt;

    &lt;meta charset="utf-8"&gt;

    &lt;title&gt;Some Meep meta, awesome&lt;/title&gt;




    &lt;-- some comment here -->
    &lt;meta name="someMeta, yay" content="meep"&gt;

&lt;/head&gt;
</pre>
<pre>
</pre>​

以下 JavaScript 有效:

var nHTML = document.getElementsByTagName('pre')[0].textContent.replace(/[\r\n]{2,}/g,'\r\n');
document.getElementsByTagName('pre')[1].appendChild(document.createTextNode(nHTML));​

JS 小提琴演示

于 2012-06-10T00:24:00.890 回答
1

要替换所有额外的换行符并仅保留一种用途:

myText = myText.replace(/\n\n*/g,'\r\n');​​​​​​​
于 2020-09-01T16:22:08.863 回答