2011-11-10 14 views
5

tengo la siguiente cadena:sustitución global con js

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

quiero reemplazar toda la [con ''. Intenté lo siguiente, pero no funcionó:

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

¿Qué estoy haciendo mal aquí?

Muchas gracias de antemano.

+0

'.replace (/ \ [/ g, '')' –

+0

¿Por qué está usando 'RegExp' en lugar de' /.../g'? ¿Podría cambiar el valor de nChar? –

Respuesta

7

tiene que escapar del [ de lo contrario, se interpreta como el inicio de una character class:

var nChar = '\\['; 

Si nChar es una variable (y supongo que es de otra manera no tendría mucho sentido en el uso RegExp en lugar de /.../g), puede que encuentre útil esta pregunta:

+0

Funcionó perfectamente ... muchas gracias ..! – neojakey

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

Me escapé del carácter [ y usé una bandera global para reemplazar todas las instancias del personaje.

0

Hoy resolví este problema. El requisito es reemplazar todo "C++" en la cadena de entrada del usuario. Como "+" tiene un significado en la expresión Reg, el string.replace falla. Así que escribí una función multi-replace para cadena js. Espero que esto pueda ayudar.

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; 
} 

Ejemplo: "ABABC" .mreplace ("a", "co"); // devuelve "a - ba - bc"

+0

pd: Odio la expresión regular. – jarjar

Cuestiones relacionadas