Удалить символ в промежутке между символами
Представим ситуацию, что у нас есть CSS стиль.
body {
margin: 0;
background: blue;
position: relative;
}
Как записать регулярное выражение, чтобы оно "прошло" внутри фигурных скобок ({...}) и удалила оттуда лишние символы "новой строки" (\n{2,}), чтобы в результате получилось следующее:
body {
margin: 0;
background: blue;
position: relative;
}
Ответы (2 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Только если внутри фигурных скобок нет вложенных фигурных скобок, можно использовать
.replace(/{[^{}]+}/g, function(x) {return x.replace(/\n{2,}/g, '\n');})
Пример работы кода:
var text = "body {\n margin: 0;\n\n background: blue;\n\n\n\n position: relative;\n}";
console.log( text.replace(/{[^{}]+}/g, function(x) {return x.replace(/\n{2,}/g, '\n');}) );
Автор решения: Qwertiy
→ Ссылка
console.log(`body {
margin: 0;
background: blue;
position: relative;
}`.replace(/(\r?\n)(((?!\r|\n)\s)*\r?\n)*/g, "$1"))