用于在最后一个括号()之间获取文本的正则表达式

时间:2012-05-05 06:23:57

标签: javascript regex match

我想使用javascript

在最后()之间提取文字

例如

var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));

结果应为

value_b

感谢您的帮助

4 个答案:

答案 0 :(得分:12)

试试这个

\(([^)]*)\)[^(]*$

here on regexr

var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(/\(([^)]*)\)[^(]*$/)[1]);

括号内的部分存储在捕获组1中,因此您需要使用match()[1]来访问结果。

答案 1 :(得分:7)

/\([^()]+\)(?=[^()]*$)/

前瞻(?=[^()]*$)断言在输入结束之前没有更多的括号。

答案 2 :(得分:5)

有效的解决方案是让.* eat up在最后(

之前的所有内容



var str = "don't extract(value_a) but extract(value_b)";

var res = str.match(/.*\(([^)]+)\)/)[1];

console.log(res);




Here is a demo at regex101

答案 3 :(得分:0)

如果最后一个结束括号始终位于句子的末尾,则可以使用Jonathans的答案。否则这样的事情可能有用:

/\((\w+)\)(?:(?!\(\w+\)).)*$/