我想知道如何删除双括号中的字符串&包括括号。这是一个例子
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/
答案 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*
编辑:我认为“嵌套顺序”需要与正则表达式相同,因此如果我的错误,可能需要重新排序交替。但是,它确实适用于您的示例。