Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从第二对括号中获取值,忽略第一对括号中的数据_Jquery_Regex_Extract - Fatal编程技术网

Jquery 从第二对括号中获取值,忽略第一对括号中的数据

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=“酒吧-(鸡尾酒)-(醉酒)

现在我需要的是“醉酒”,而不是“鸡尾酒”

我设法从第一对中获取了值,但仍然难以从第二对中获取数据

这是我提取第一个值的代码:

 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很高兴我能帮忙。