Jquery 从第二对括号中获取值,忽略第一对括号中的数据
我正在寻找一种从第二对括号中获取值的方法 这是一个例子: var foo=“酒吧-(鸡尾酒)-(醉酒) 现在我需要的是“醉酒”,而不是“鸡尾酒” 我设法从第一对中获取了值,但仍然难以从第二对中获取数据 这是我提取第一个值的代码:Jquery 从第二对括号中获取值,忽略第一对括号中的数据,jquery,regex,extract,Jquery,Regex,Extract,我正在寻找一种从第二对括号中获取值的方法 这是一个例子: var foo=“酒吧-(鸡尾酒)-(醉酒) 现在我需要的是“醉酒”,而不是“鸡尾酒” 我设法从第一对中获取了值,但仍然难以从第二对中获取数据 这是我提取第一个值的代码: var foo = "bar - (cocktails) - (drunk)"; chosenfoo = foo; filterOut = /\((.*)\)/i; var strippedFoo= chosenfoo.match(filterOut)[1]
var foo = "bar - (cocktails) - (drunk)";
chosenfoo = foo;
filterOut = /\((.*)\)/i;
var strippedFoo= chosenfoo.match(filterOut)[1];
$('#foobarfield').val(strippedFoo);
我太勇敢了,没想到把数字1改成2就能解决这个问题
当值为“bar-(cocktails)”时,我会得到正确的结果,就像“cocktails”一样,但是对于前面给定的带有两对括号的var,此代码的结果值是:
鸡尾酒)-(喝醉了)
不完全是我想要的:(
有人能帮我吗?你在匹配第一个括号和最后一个括号之间的所有内容。 像这样修正你的正则表达式
/\((.*?)\)/gi
最后应该有两个捕获您正在匹配第一个括号和最后一个括号之间的所有内容。 像这样修正你的正则表达式
/\((.*?)\)/gi
您应该会得到两个捕获您可以通过两个更改获得您想要的:
- 为全局匹配(多个匹配)添加
,否则在第一个匹配时停止/g
- 添加
表示(基本上)“可能的最短匹配”?
/\((.*?)\)/gi
更改为/g后,返回的是一个匹配数组,因此第一个是[0]
,第二个是[1]
片段:
var foo=“酒吧(鸡尾酒)-(醉酒)”;
chosenfoo=foo;
过滤器输出=/\(.*?\)/gi;
var strippedFoo=chosenfoo.match(filterOut)[1];
$(“#foobarfield”).text(strippedFoo);
您可以通过两个更改获得所需的内容:
- 为全局匹配(多个匹配)添加
,否则在第一个匹配时停止/g
- 添加
表示(基本上)“可能的最短匹配”?
/\((.*?)\)/gi
更改为/g后,返回的是一个匹配数组,因此第一个是[0]
,第二个是[1]
片段:
var foo=“酒吧(鸡尾酒)-(醉酒)”;
chosenfoo=foo;
过滤器输出=/\(.*?\)/gi;
var strippedFoo=chosenfoo.match(filterOut)[1];
$(“#foobarfield”).text(strippedFoo);
您可以使用以下内容获取最后一个括号:
\((?!.*\().*\)
使用这个括号,您可以得到最后一个完整的括号,即使最后有一个不完整的括号(只有一个(
或)
):
\((?!.*\(.*\)).*?\)
更新以匹配括号的内容:
\((?!.*\(.*\))(.*?)\)
您可以使用以下内容获取最后一个括号:
\((?!.*\().*\)
使用这个括号,您可以得到最后一个完整的括号,即使最后有一个不完整的括号(只有一个(
或)
):
\((?!.*\(.*\)).*?\)
更新以匹配括号的内容:
\((?!.*\(.*\))(.*?)\)
看看下面的例子
var foo=“酒吧(鸡尾酒)-(醉酒)”;
var strippedFoo=foo.match(/\(.*?)/gi)[1]。替换(/\(\\)/g,”;;
警报(strippedFoo)
看下面的例子
var foo=“酒吧(鸡尾酒)-(醉酒)”;
var strippedFoo=foo.match(/\(.*?)/gi)[1]。替换(/\(\\)/g,”;;
警报(strippedFoo)
第二对还是最后一对括号?在本例中是第二对。尽管,瞄准最后一对括号也会对这一对起作用。第二对还是最后一对括号?在本例中是第二对。尽管,瞄准最后一对括号也会对这一对起作用。好的,这与我想要得到的结果非常接近,但由于某些原因,它将括号添加到结果中。因此,现在我将(cocktails)和(Dunk)作为单独的值,那么我如何调整它以获得没有括号的“cocktails”和“Dunk”?不要误会,当我用原始代码瞄准第一个时,我确实得到了“cocktails”“…那么这里有什么不同呢?我可能会选择一个。替换,但这似乎不是你想要的,所以我正在调查未捕获的组并为你展望未来。不清楚为什么JS会像我感觉的那样包含括号(例如)C#不会。好吧,这与我想要得到的结果非常接近,但出于某种原因,它在结果中添加了括号。所以现在我将(鸡尾酒)和(醉酒)作为单独的值,那么我如何调整它以得到“鸡尾酒”和“醉酒”呢没有括号?别误会,当我用原始代码瞄准第一个时,我确实会得到“鸡尾酒”…那么这里的区别是什么呢?我可能会选择一个。替换,但这似乎不是您想要的,所以我正在调查非捕获组并为您展望未来。不清楚为什么JS会像我感觉的(例如)C#不会那样包含括号。此代码还返回带有括号的值,如“(cocktails)”和“(醉酒)”…我需要不带括号的值。您的代码与更新的答案完全一致,将给出预期的结果。此代码还返回带括号的值,如“(cocktails)”和“(醉酒)”…我需要这些,不带括号。你的代码与更新的答案完全一致,将给出预期结果。哦,该死..是..好..我原以为这可以在正则表达式中完成,但看到这一点后,解决方案就摆在我面前:p Tnx一百万对于这个非常清楚的答案&solution@George很高兴我能帮上忙。哦,该死的……耶啊..嗯..我原以为它可以在正则表达式中完成,但在看到这一点后,解决方案就摆在我面前:对于这个非常清楚的答案,p Tnx一百万solution@George很高兴我能帮忙。