我正在寻找一种从第二对括号中获取值的方法。
这是一个例子: var foo =“bar - (鸡尾酒) - (醉);
现在我需要“喝醉”的价值,但不是“鸡尾酒”的价值。
我设法从第一对获得了价值,但仍然很难从第二对获得数据。
这是我提取第一个值的代码:
var foo = "bar - (cocktails) - (drunk)";
chosenfoo = foo;
filterOut = /\((.*)\)/i;
var strippedFoo= chosenfoo.match(filterOut)[1];
$('#foobarfield').val(strippedFoo);
我太勇敢了,以为将数字1改为2可以解决它。 :)
当值为“bar - (鸡尾酒)”时,我会把它弄好,就像“鸡尾酒”一样,但是对于先前给定的var和两对括号,此代码的结果值为:
鸡尾酒) - (喝醉了
不完全是我想要的:(
任何人都可以帮我这个吗?
答案 0 :(得分:1)
您可以通过两项更改获得所需内容:
/g
(多个匹配),否则在第一次匹配时停止?
表示(基本上)'最短匹配'如:
/\((.*?)\)/gi
如果更改为/ g,则返回的是一系列匹配项,因此首先是[0]
,第二个是[1]
段:
var foo = "bar - (cocktails) - (drunk)";
chosenfoo = foo;
filterOut = /\((.*?)\)/gi;
var strippedFoo= chosenfoo.match(filterOut)[1];
$('#foobarfield').text(strippedFoo);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='foobarfield'></div>
答案 1 :(得分:1)
请看下面的例子
var foo = "bar - (cocktails) - (drunk)";
var strippedFoo= foo.match(/\((.*?)\)/gi)[1].replace(/\(|\)/g, "");;
alert(strippedFoo)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:0)
您正在匹配第1个和最后一个括号之间的所有内容。 像这样修复你的正则表达式
/\((.*?)\)/gi
你应该最终获得2次捕获
答案 3 :(得分:0)
你可以得到最后一个括号:
\((?!.*\().*\)
即使在最后有一个非完整的括号(只有一个(
或)
),你也可以得到最后一个完整的括号:
\((?!.*\(.*\)).*?\)
更新以匹配括号内容:
\((?!.*\(.*\))(.*?)\)