function myFunction() {
var str = document.getElementById("demo").innerHTML;
var left = str.replace(/(.*?{)(.*?)(};)/, "$1");
var mid = str.replace(/(.*?{)(.*?)(};)/, "$2");
var right = str.replace(/(.*?{)(.*?)(};)/, "$3");
var midnospace = mid.split(" ").join("");
var result = left + midnospace + right;
document.getElementById("demo").innerHTML = result;
}
<!DOCTYPE html>
<html>
<body>
<p id="demo">something { some words };</p>
<button onclick="myFunction()">Try it</button>
</body>
</html>
Несколько полезных постов:
Объяснение:
1) Разделить строку на 3 группы захвата. Используйте string replace для хранения только указанных c номеров групп захвата. Одно и то же регулярное выражение используется 3 раза, и .*?
делает регулярное выражение «не жадным», поэтому оно не перерасширяется.
a - до / включая {
b - внутри {}
c -} и после.
2) разделить результат из 1b) для пробелов, создание списка строк, которые вы снова объединяете вместе с пустой строкой, чтобы избавиться от пробелов
3) рекомбинировать 1a), 2 и 1 c, чтобы получить желаемый ответ .