【发布时间】:2011-05-16 14:26:35
【问题描述】:
能改吗
Hello, this is Mike (example)
到
Hello, this is Mike
在正则表达式中使用 JavaScript?
【问题讨论】:
标签: javascript regex
能改吗
Hello, this is Mike (example)
到
Hello, this is Mike
在正则表达式中使用 JavaScript?
【问题讨论】:
标签: javascript regex
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");
结果:
"Hello, this is Mike"
【讨论】:
(example)
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 年看起来好多了。