Удалить символ в промежутке между символами

Представим ситуацию, что у нас есть 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"))

→ Ссылка