JavaScript / regex:删除括号之间的文本


92

可以改变吗

Hello, this is Mike (example)

Hello, this is Mike

正则表达式使用JavaScript?

Answers:


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

结果:

"Hello, this is Mike"

14
请注意,.replace()不会更改字符串本身,它只会返回一个新字符串。因此,您仍然必须将变量设置为等于您所做的更改。
Ayub

2
如果括号在字符串中间,则上面的正则表达式将删除它们周围的所有空格。这可能不好。
奈杰尔·约翰逊

1
怎么做逆呢?我(example)只想要
点菜

如果您遇到类似问题则不起作用:有点混乱(向上(右)),但是会发生:)
TigrouMeow


6

尝试 / \([\s\S]*?\)/g

哪里

空格)从字面上匹配字符(空格)

\((从字面上匹配字符

[\S\s]匹配任何字符(\S匹配任何非空白字符并 \s匹配任何空白字符)

*? 零到无限次数之间的匹配

\))从字面上匹配字符

g 全球比赛

代码示例:

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


1

我发现此版本最适合所有情况。它不会删除所有空格。

例如“ a(测试)b”->“ a b”

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


当心trim不受普遍支持:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,至少在2015年没有出现……在2017年看起来要好得多。
Christophe Roussy

失败并显示“此(示例(此处),哪个)不好”。即。嵌套的括号!
Marc

1

如果您还需要删除嵌套括号内的文本,则:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.