Javascript - замена слова с помощью регулярного выражения, только если вокруг него есть пробел - PullRequest
0 голосов
/ 01 декабря 2009

Вырезанная версия моего кода выглядит примерно так:

string="test test testtest testtest test";
replacer="test";
string=string.replace(new RegExp(' '+replacer+' ','gi')," REPLACED ");

Теперь я хочу заменить слово, только если вокруг него есть пробел. Код на самом деле работает нормально, но мне просто интересно, почему не работает то, что ниже, которое было бы лучше в моем случае.

RegExp('\s'+replacer+'\s','gi')

Ответы [ 3 ]

3 голосов
/ 01 декабря 2009

Почему бы вам не попробовать это:

RegExp('\\s'+replacer+'\\s','gi')
1 голос
/ 01 декабря 2009

Ваш пример заменит вкладки пробелами.

Вы, вероятно, хотите это:

string=string.replace(new RegExp('\\b'+replacer+'\\b','gi'),"REPLACED");

Или, если вы действительно хотите, чтобы только пробел для разделения слов, вы можете использовать что-то вроде этого:

string=string.replace(new RegExp('(\\s)'+replacer+'(\\s)','gi'),"$1REPLACED$2");
0 голосов
/ 11 июня 2017

Я много чего пробовал, но шаблон регулярных выражений не работал идеально.

Моя проблема заключалась в том, что мне пришлось заменить "it" на <product_name> в предложении.

Например, «что это значит» => «что такое использование <product_name>»

Но в таких словах, как кислотность, регулярное выражение заменяет его на "кислоту <product_name> y", что неверно.

Я предложил одно решение, которое решило мою проблему, и хотел бы поделиться им со всеми вами.

var b=[];
var sent="what is use of it";
sent.split(" ").forEach((x) => {if(x=='it'){x=<product_name>;}b.push(x)});
sent=b.join(" ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...