如何删除双括号中的字符串?

时间:2013-12-31 01:00:20

标签: javascript regex

我想知道如何删除双括号中的字符串&包括括号。这是一个例子

var str="(C84) [Yayui (shirogisu)] 1 Day with the Commodore";
var n = str.replace(/\s*\(.*?\)\s*/g, '')
alert(n);

到目前为止,它只删除了单个括号,但没有删除另一个括号内的括号。最终输出应如下所示:

1 Day with the Commodore

如何删除任何类型括号中的字符串,例如{,},[,],(,) 实时版:http://jsfiddle.net/aPa25/

2 个答案:

答案 0 :(得分:3)

不确定双括号是什么意思,但要删除你可以使用的parens和square braces中的所有东西

str.replace(/\s*\(.*?\)\s*/g, '').replace(/\s*\[.*\]\s*/g, '')

第一个replace删除括号中的所有内容,第二个删除方括号中的所有内容。

此外,如果您知道输入的形式总是如此,即括号部分后跟方括号部分,您可以这样做:

str.replace(/^\s*\(\w+\)\s*\[.*\]\s*/, '')

它不那么通用,但如果这个假设是真的,可能会更强大。

编辑:鉴于您希望保留文本后面的其他填充和方括号,请尝试:

str.replace(/\s*\([^)]*\)\s*/g, '').replace(/\s*\[[^\]]*\]\s*/g, '')

如果你说可以在第一个方括号内嵌套方括号,我会说,从数学上讲,你需要一个比有限状态机(正则表达式)更强大的理论机器。

答案 1 :(得分:3)

这应该作为替换正则表达式。它单独查看每种括号类型。

\s*(?:\[[^[]+]|\([^)]+\)|{[^}]+})\s*

编辑:我认为“嵌套顺序”需要与正则表达式相同,因此如果我的错误,可能需要重新排序交替。但是,它确实适用于您的示例。