удалить пробелы вокруг метасимволов с помощью регулярных выражений в javacript - PullRequest
3 голосов
/ 06 марта 2020

Попытка избавиться от любого пробела вокруг не-алфавитного символа c без удаления указанного символа, такого как /\s*(\W)\s*/g будет по умолчанию

Есть ли способ нацеливаться только на пробелы с помощью. replace ()

например:

var regex = "/\s*(\W)\s*/g";
var text = "Words  : \"  text docs\"";
var text = text.replace(regex , "");
console.log(text)

ожидаемый текст: "Words:" text docs "

Что-то вроде удаление пробелов между специальными символами и словами python но в javascript

1 Ответ

2 голосов
/ 06 марта 2020

Следует иметь в виду, что \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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...