无法将我的字符串替换为包含[和]

时间:2019-01-18 06:29:43

标签: javascript replaceall

即使我的总字符串中包含要替换的字符串,我也无法从总字符串中 {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);

当我从 replaceThis 中删除 [0] 时,此代码有效。为什么在使用 [..] 符号时此代码不起作用。请帮我。

4 个答案:

答案 0 :(得分:7)

许多字符在正则表达式中都有特殊含义。 ].表示字符集,而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]}

而不是

{{1}}

答案 1 :(得分:1)

这是我的解决方案:

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

答案 2 :(得分:1)

您使用了错误的正则表达式。它应该是(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);

答案 3 :(得分:0)

您需要在正则表达式中转义特殊字符。 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);