全局替换为js

时间:2011-11-10 20:39:24

标签: javascript

我有以下字符串:

[27564][85938][457438][273][48232]

我想替换所有[与''。我尝试了以下但是没有用:

 var str = '[27564][85938][457438][273][48232]'
 var nChar = '[';
 var re = new RegExp(nChar, 'g')    
 var visList = str.replace(re,'');

我在这里做错了什么?

非常感谢提前。

3 个答案:

答案 0 :(得分:7)

您需要转义[,否则会被解释为character class的开头:

var nChar = '\\[';

如果nChar是一个变量(我认为它在使用RegExp而不是/.../g时没什么意义),那么你可能会发现这个问题很有用:

答案 1 :(得分:1)

var string = "[27564][85938][457438][273][48232]";
alert(string.replace(/\[/g, '')); //outputs 27564]85938]457438]273]48232]

我转义了[字符并使用全局标志来替换该字符的所有实例。

答案 2 :(得分:0)

我今天遇到了这个问题。 要求是替换所有" c ++"在用户输入字符串中。因为" +"在Reg表达式中有意义,string.replace失败。 所以我为js字符串写了一个多替换函数。希望这可以提供帮助。

String.prototype.mreplace = function (o, n) {
    var off = 0;
    var start = 0;
    var ret = "";
    while(true){
        off = this.indexOf(o, start);
        if (off < 0)
        {
            ret += this.substring(start, this.length);
            break;
        }
        ret += this.substring(start, off) + n;
        start = off + o.length;
    }
    return ret;
}

实施例:     &#34; ababc&#34; .mreplace(&#34; a&#34;,&#34; a - &#34;); //返回&#34; a - ba - bc&#34;