JavaScript / regex: eliminar texto entre paréntesis

93

¿Sería posible cambiar

Hello, this is Mike (example)

a

Hello, this is Mike

usando JavaScript con Regex?

jack moore
fuente

Respuestas:

211
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

Resultado:

"Hello, this is Mike"
thejh
fuente
14
tenga en cuenta que .replace () no cambia la cadena en sí, solo devuelve una nueva cadena. Por lo tanto, aún debe configurar la variable para que sea igual a lo que cambió.
Ayub
2
Donde los paréntesis están en el medio de una cadena, la expresión regular de arriba eliminará todos los espacios en blanco alrededor de ellos. Probablemente esto no sea bueno.
Nigel Johnson
1
¿Cómo hacer la inversa de esto? Quiero (example)solamente
Carta
No funciona si tienes algo como: Está un poco desordenado (arriba (derecha)) pero sucede :)
TigrouMeow
27
var str = "Hello, this is Mike (example)";

alert(str.replace(/\s*\(.*?\)\s*/g, ''));

Eso también reemplazará el exceso de espacios en blanco antes y después del paréntesis.

Tatu Ulmanen
fuente
7

Tratar / \([\s\S]*?\)/g

Dónde

(espacio) coincide con el carácter (espacio) literalmente

\(coincide con el personaje (literalmente

[\s\S]coincide con cualquier carácter ( \scoincide con cualquier carácter de espacio en blanco y \Scoincide con cualquier carácter que no sea de espacio en blanco)

*? coincidencias entre cero y tiempos ilimitados

\)coincide con el personaje )literalmente

g partidos a nivel mundial

Ejemplo de código:

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}

Mamun
fuente
1

Encontré esta versión más adecuada para todos los casos. No elimina todos los espacios en blanco.

Por ejemplo, "a (prueba) b" -> "a b"

"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();

Pascalio
fuente
Tenga cuidado trimno es universalmente compatible: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , al menos no fue en 2015 ... en 2017 se ve mucho mejor.
Christophe Roussy
falla con "esto (ejemplo (aquí) que) no es bueno". es decir. parens anidados!
Marc
1

Si también necesita eliminar texto entre paréntesis anidados, entonces:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Bagazo
fuente