Regex - заменить многострочные разрывы с одним в javascript
это какое-то переменное содержимое в javascript:
<meta charset="utf-8">
<title>Some Meep meta, awesome</title>
<-- some comment here -->
<meta name="someMeta, yay" content="meep">
</head>
Я хочу уменьшить количество разрывов строк (неизвестное число) до одного разрыва строки, в то время как остальная часть форматирования сохраняется. Это нужно сделать в javascript
с помощью regex
.
У меня проблемы с табулятором или сохранение формата.
Ответы
Ответ 1
Попробуйте следующее:
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');
Ответ 2
myText = myText.replace(/\n{2,}/g, '\n');
Ответ 3
Учитывая следующее (не забудьте закодировать объекты 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));
JS Fiddle demo.