Невозможно заменить мою строку строкой, содержащей [и] - PullRequest
0 голосов
/ 18 января 2019

Я не могу {info.inner.interest [0]} строка из моей общей строки, даже если моя общая строка содержит строку для замены

Я искал тот же вопрос в Google и попробовал другой код, хотя у меня это не сработало. Пожалуйста, посмотрите на изображение ниже

Error Image

var a = "text :Array Item : {info.inner.interest[0]}",
  replaceThis = "info.inner.interest[0]",
  outPut = a.replace(new RegExp('{' + replaceThis + '}', 'g'), 'hello me!!')
console.log(outPut);

Этот код работает, когда я удаляю [0] из replaceThis . Почему этот код не работает, когда я использую символ [..] . Пожалуйста, помогите мне.

Ответы [ 4 ]

0 голосов
/ 18 января 2019

Вы используете неправильное регулярное выражение. Это должно быть (info\\.inner\\.interest\\[0\\]). Смотрите ниже код:

var a = "text :Array Item : {info.inner.interest[0]}",
  replaceThis = "info.inner.interest[0]",
  outPut = a.replace(new RegExp('(info\\.inner\\.interest\\[0\\])', 'g'), 'hello me!!')
console.log(outPut);
0 голосов
/ 18 января 2019

Вам необходимо экранировать специальные символы в регулярном выражении. replaceThis = "info.inner.interest\[0\]"

или сокращенно

var a = "text :Array Item : {info.inner.interest[0]}",
  replaceThis = "info.inner.interest[0]",
  outPut = a.replace(/\[|\]/g, 'hello me!!');
console.log(outPut);
0 голосов
/ 18 января 2019

Это мое решение:

var a = "text :Array Item : {info.inner.interest[0]}";
replaceThis = "info.inner.interest[0]";
outPut = a.replace(replaceThis, 'hello me!!');
console.log(outPut);
0 голосов
/ 18 января 2019

Многие символы имеют особое значение в регулярном выражении. [ и ] обозначают набор символов , а . обозначает любой символ , а не буквальную точку. Если вы хотите сопоставить строку, содержащую какие-либо специальные символы, вам нужно сначала экранировать эти символы с обратной косой чертой, например:

const escape = str => str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

var a = "text :Array Item : {info.inner.interest[0]}",
  replaceThis = "info.inner.interest[0]",
  outPut = a.replace(new RegExp('{' + escape(replaceThis) + '}', 'g'), 'hello me!!')
console.log(outPut);

В результате регулярное выражение будет

{info\.inner\.interest\[0\]}

вместо

{info.inner.interest[0]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...