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

IT技术 javascript regex
2021-02-23 06:37:08

有没有可能改变

Hello, this is Mike (example)

Hello, this is Mike

在正则表达式中使用 JavaScript?

5个回答
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

结果:

"Hello, this is Mike"
不是一个强大的解决方案,它可以在控制台上运行,但由于某种原因不在脚本标签中,已经尝试了很多次。另一个答案工作得很好。
2021-04-23 06:37:08
括号在字符串中间的地方,上面的正则表达式将删除它们周围的所有空格。这恐怕不好。
2021-04-28 06:37:08
请注意, .replace() 不会更改字符串本身,它只会返回一个新字符串。因此,您仍然必须将变量设置为等于您更改的内容。
2021-05-02 06:37:08
如果您有以下情况则不起作用:它有点混乱(向上(右))但它发生了:)
2021-05-03 06:37:08
如何做到这一点的逆?(example)只要
2021-05-07 06:37:08
var str = "Hello, this is Mike (example)";

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

这也将替换括号前后多余的空格。

尝试 / \([\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}

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

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

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

例如“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 年它看起来好多了。
2021-04-23 06:37:08
失败,“这个(例子(这里)which)不好”。IE。嵌套括号!
2021-04-28 06:37:08