这是javascript中的某种变量内容:
<meta charset="utf-8">
<title>Some Meep meta, awesome</title>
<-- some comment here -->
<meta name="someMeta, yay" content="meep">
</head>
我希望将多行换行符(未知数字)减少到单个换行符,同时仍保留其余格式。这应该在javascript
中使用regex
完成。
我在制表机上遇到问题或保留格式。
答案 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');
答案 2 :(得分:2)
鉴于以下内容(记得编码HTML实体,例如<
,>
和(其中显然)&
):
<pre>
<head>
<meta charset="utf-8">
<title>Some Meep meta, awesome</title>
<-- some comment here -->
<meta name="someMeta, yay" content="meep">
</head>
</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));
答案 3 :(得分:0)
要替换所有多余的换行符,并只保留一种用途:
myText = myText.replace(/\n\n*/g,'\r\n');