JavaScript / regex: remove o texto entre parênteses

92

Seria possível mudar

Hello, this is Mike (example)

para

Hello, this is Mike

usando JavaScript com Regex?

jack moore
fonte

Respostas:

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

Resultado:

"Hello, this is Mike"
thejh
fonte
14
note que .replace () não altera a string em si, apenas retorna uma nova string. Portanto, você ainda precisa definir a variável para ser igual ao que você alterou.
Ayub
2
Onde os parênteses estão no meio de uma string, o regex acima removerá todos os espaços em branco ao redor deles. Isso provavelmente não é bom.
Nigel Johnson
1
Como fazer o inverso disso? Eu quero (example)apenas
carta
Não funciona se você tiver algo como: Está um pouco confuso (à direita)), mas acontece :)
TigrouMeow
26
var str = "Hello, this is Mike (example)";

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

Isso também substituirá o excesso de espaço em branco antes e depois dos parênteses.

Tatu Ulmanen
fonte
6

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

Onde

(espaço) corresponde ao caractere (espaço) literalmente

\(corresponde ao personagem (literalmente

[\S\s]corresponde a qualquer caractere (corresponde a qualquer caractere \Sdiferente de espaço em branco e \scorresponde a qualquer caractere de espaço em branco)

*? corresponde entre zero e tempos ilimitados

\)corresponde ao personagem )literalmente

g combina globalmente

Exemplo 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
fonte
1

Achei esta versão mais adequada para todos os casos. Não remove todos os espaços em branco.

Por exemplo "a (teste) b" -> "a b"

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

Pascalius
fonte
Cuidado trimnão é universalmente suportado: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , pelo menos não era em 2015 ... em 2017 parece muito melhor.
Christophe Roussy
falha com "isso (exemplo (aqui) que) não é bom". ie. parênteses aninhados!
Marc
1

Se você também precisar remover o texto dentro de parênteses aninhados:

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