即使我的总字符串中包含要替换的字符串,我也无法从总字符串中 {info.inner.interest [0]}
我在Google中搜索了相同的问题,并尝试了其他代码,即使那对我不起作用。请看下面的图片
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] 时,此代码有效。为什么在使用 [..] 符号时此代码不起作用。请帮我。
答案 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);