Следует иметь в виду, что \W
соответствует любому «несловесному» символу, который не является буквой ASCII, di git или _
. \W
, в JS регулярное выражение, равно [^A-Za-z0-9_]
. Таким образом, он также соответствует пробелам, которые вам нужно удалить. Чтобы иметь возможность сопоставлять только непробельные символы, не являющиеся пробелами, вам нужно заменить \W
на шаблон [^\w\s]
.
Итак, остальное просто заменяет совпадение на обратная ссылка на замену к значению группы 1, которое составляет $1
в JS:
text = text.replace(/\s*([^\w\s])\s*/g , "$1")
См. демонстрационную версию regex
JS демо:
console.log("Some - text +=@!#$#$^%* here . ".replace(/\s*([^\w\s])\s*/g , "$1"))