正则表达式替换匹配任何字符的所有内容

时间:2010-07-11 03:31:18

标签: javascript regex replace variables

a[b].innerHTML=a[b].innerHTML.replace(RegExp('['+bbc[c][0]+']','ig'),bbc[c][1])

这基本上就是我的工作。它包含在两个循环中,因此应该解释为什么它看起来像它的作用。基本上我想要替换匹配'['+变量来自数组+']'的东西。我正在制作一个免费论坛的BBCode脚本,并且不要指向任何BBCode脚本。 问题是正则表达式正在替换匹配任何字符的所有内容。因此,它将[,q,c,o,d,e,]替换为数组的第二部分。 (QCODE是一个使用的BBCode示例)我不知道它是否在正常/正则表达式/ []中这样做但是它很烦人。我试过逃避[]('\ ['+ v +'\]'),我试过eval(),我已经尝试了你能想到的一切。我需要使这个东西像它应该的那样工作,因为一切都按照它应该设置。如果你知道如何解决这个问题,请回答。我希望你在回答之前测试你的解决方案,因为你有没有想法我尝试过多少方法。

2 个答案:

答案 0 :(得分:3)

使用正确的转义字符:

RegExp('\\['+bbc[c][0]+'\\]','ig'),

/只是一个普通字符(除了正则表达式文字,你没有使用它),转义字符是\。你还必须转义两次,一次是字符串文字,一次是正则表达式。

答案 1 :(得分:1)

您的代码无法正常工作的原因是因为您使用的是RegExp,它接收正则表达式的字符串。在此字符串中,您需要转义反斜杠转义字符。以下内容适用:

​var str = 'Before. [qcode] After.';
alert(str.replace(RegExp('\\[qcode\\]', 'ig'), 'During.'));​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​