Debería ser:
str = str.replace(/\[.*?\]/g,"");
No es necesario barras invertidas dobles (\), porque no es una cadena sino una declaración de expresiones regulares, si se construye la expresión regular de una cadena que hace necesidad la doble barra invertida;).
También interpretaba literalmente el 1 (que no coincidía). El uso de .*
indica cualquier valor entre los corchetes.
La nueva versión de cadena acumulación RegExp sería:
str=str.replace(new RegExp("\\[.*?\\]","g"),"");
ACTUALIZACIÓN: Para eliminar corchetes solamente:
str = str.replace(/\[(.*?)\]/g,"$1");
Su código de seguridad no está funcionando, porque está tratando de igualar "[]" (secuencialmente sin nada permitido entre). Podemos solucionar esto mediante la agrupación de grupos no codiciosos ((.*?)
) lo que hay entre los corchetes, y utilizando una retro-referencia ($1
) para el reemplazo.
Actualización 2: Para eliminar múltiples corchetes
str = str.replace(/\[+(.*?)\]+/g,"$1");
// bla [bla] [[blaa]] -> bla bla blaa
// bla [bla] [[[blaa] -> bla bla blaa
Nota esto no se corresponde con las cantidades de apertura/cierre, simplemente elimina toda secuencial se abre y se cierra. Además, si los corchetes secuenciales tienen separadores (espacios, etc.) no coincidirán.
gracias, pero solo estoy tratando de eliminar los corchetes, no lo que hay dentro de ellos – ilyo
Su solución no eliminará todos los corchetes debido a ese codicioso ". *" Allí. No lo necesita de todos modos, simplemente 'str.replace (/ [\ [\]]/g, '')' – Pointy
@Rudu esto funciona si tengo un solo paréntesis de apertura y cierre, ¿y si tengo '[[ ['? – ilyo