繁体   English   中英

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

[英]How to remove string in double brackets?

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

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/

不确定双括号的含义,但是要删除括号和方括号中的所有内容,您可以使用

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

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

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

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

它的通用性较低,但如果该假设为真,则可能会更健壮。

编辑:鉴于以后您想要保留的文本中可能还有其他括号和方括号,请尝试:

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

如果您说在第一个方括号内可以嵌套方括号,那么我会说,从数学上讲,您将需要比有限状态机(regex)更强大的理论机。

这应该用作替换正则表达式。 它针对每种括号类型进行单独查找。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM