Как удалить символы из строки с помощью регулярных выражений - PullRequest
1 голос
/ 04 мая 2020

Я хочу удалить << any words #_ из следующей строки.

stringVal = "<<Start words#_ I <<love#_ kind <<man>>, <<john#_ <<kind man>> is really <<great>> <<end words#_ ";

Результат должен быть:

Start words I love kind <<man>>, john <<kind man>> is really <<great>> end words

Я пытался так:

stringVal = stringVal.replace(/^.*<<.+\#_.*$/g, "");

Но он удаляет всю строку.

Примечание: << any words #_ может существовать multiple время в строке, в начале, в середине или в конце

Ответы [ 2 ]

3 голосов
/ 04 мая 2020

Исходя из ваших примеров, вы можете искать:

stringVal = "<<Start words#_ I <<love#_ kind <<man>>, <<john#_ <<kind man>> is really <<great>> <<end words#_ ";

stringVal = stringVal.replace(/<<([-\w ]+)#_/g, "$1");
console.log(stringVal);

Чтобы разрешить другие символы, измените \w+, например, [-\w ]+.
См. дополнительную демонстрацию на regex101.com .

2 голосов
/ 04 мая 2020

Вместо использования .+\#_, и вы хотите сопоставить any words, вы можете сопоставить символы слова, необязательно повторяемые путем сопоставления пробела и символов слова.

<<(\w+(?: \w+)*)#_

Regex demo

В группе замены используйте 1 $1

Обратите внимание, что вам не нужно бежать #

const regex = /<<(\w+(?: \w+)*)#_/g;
stringVal = "I <<love#_ kind <<man>>, <<john#_ <<kind man>> is really <<great>>";
const result = stringVal.replace(regex, '$1');

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...