正则表达式 - 在javascript中用单个替换多个换行符

时间:2012-06-09 23:51:36

标签: javascript regex replace

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

    <meta charset="utf-8">

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




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

</head>

我希望将多行换行符(未知数字)减少到单个换行符,同时仍保留其余格式。这应该在javascript中使用regex完成。

我在制表机上遇到问题或保留格式。

4 个答案:

答案 0 :(得分:57)

试试这个:

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');

答案 1 :(得分:9)

myText = myText.replace(/\n{2,}/g, '\n');​​​​​​​

See demo

答案 2 :(得分:2)

鉴于以下内容(记得编码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 Fiddle demo

答案 3 :(得分:0)

要替换所有多余的换行符,并只保留一种用途:

myText = myText.replace(/\n\n*/g,'\r\n');​​​​​​​
相关问题