什么Javascript正则表达式模式可用于捕获潜在嵌套括号中的文本?

时间:2013-09-18 14:51:27

标签: javascript regex

我有一个字符串,可以看起来像这些Adjuster, Carrier 3 (Carrier 3)Adjuster, Carrier 3 (Carrier 3 (Test))

我想捕获第一组括号内的内容。我的原始正则表达式模式是\((.+?)\)(非贪婪),因此我可以将文本捕获为组#1。

var selectedOwnerText = /* GET THE TEXT FROM NODE/FIELD/ETC. */, 
    carrierName = '',
    rePattern = /\((.+?)\)/;

    if (selectedOwnerText != '') {
       carrierName = selectedOwnerText.match(rePattern);
       if (carrierName != null) {
          carrierName = carrierName[1];
       }
    }
 // Rest of code...

这适用于第一个文本情况,但在第二个文本情况下,它抓住外部括号,例如(Carrier 3 (Test)

是否有正则表达式模式可以捕获外括号内的文本,也可能包括括号?我希望从上面提取Carrier 3Carrier 3 (Test)

编辑:我刚刚被告知这个数据字段是自由格式文本,因此任何内容都可能出现在外部括号内。所以,我需要捕获外括号内的所有内容。

编辑2:我给了一个用户正确的答案,因为它回答了原始问题(假设只有一组内括号)。现在我知道文本可能是任何东西,Javascript正则表达式模式是不可能的,我放弃了正则表达式方法。我深入研究了服务器端代码并​​找到了我需要的数据的JSON文字,因此在创建页面/ Javascript时,我可以使用数据结构来获取我需要的内容,而不必担心字符串实际上是什么样的。感谢所有试图提供帮助的人!

1 个答案:

答案 0 :(得分:1)

当且仅当您的字符串的格式为word, word (anything inside)而非word, word (anything inside) word (more parenthesized stuff)时,您才可以使用贪婪版本:

/\((.+)\)/;

您将获得第一个左括号和最后一个右括号内的所有内容。

regex101 demo