【发布时间】:2016-10-27 08:17:49
【问题描述】:
我有正则表达式,可以提取括号之间的值。
它大部分时间都在工作,但当它以括号结尾时就不行
var val = 'STR("ABC(t)")';
var regExp = /\(([^)]+)\)/;.
var matches = regExp.exec(val);
console.log(matches[1]); //"ABC(t"
我想要的是"ABC(t)".
有什么想法可以修改我的正则表达式来实现这个吗?
更新 该值始终在括号内。
一些例子:
'ASD("123")'; => '123'
'ASD(123)'; => '123'
'ASD(aa(10)asda(459))'; => 'aa(10)asda(459)'
所以首先有一些文本(总是文本)。然后有一个(,它总是以一个)结尾。我想要之间的值。
【问题讨论】:
-
你逃脱了错误的关闭
),所以你的捕获组结束,然后你匹配)(当它应该是相反的时候)。投票偏离主题,因为问题是印刷错误。 -
除非对输入有特定限制,否则使用正则表达式很难解决。根据输入中允许的内容和不允许的内容,只有实际的解析器才能正确执行此操作。
-
这种情况下
'some text (num(10a ) ss) STR("ABC(t)")'应该匹配什么? -
/("\w+\(.*?\)")/在这种情况下应该可以工作。 -
如果字符串不是较长字符串的一部分,
/\((.+)\)/可以。需要有关输入的更多详细信息。
标签: javascript regex