Javascript 无法将输入字符串与结尾前的“')匹配

Javascript 无法将输入字符串与结尾前的“')匹配,javascript,jquery,regex,Javascript,Jquery,Regex,我在编写正则表达式以匹配以下字符串时遇到问题: var p1=@VAL([Test1Q1].[Bandwidth]) var p2=@VAL([Test1Q1].[Usages (KB)]) 模式应匹配以@VAL开头、以第一个括号结尾的输入,并从上述输入中捕获以下内容: [Test1Q1].[Bandwidth] [Test1Q1].[Usages (KB)] 我尝试使用以下表达式: var fieldPattern = /@VAL\((.*)\)/; var P1_Pattern = p1

我在编写正则表达式以匹配以下字符串时遇到问题:

var p1=@VAL([Test1Q1].[Bandwidth])
var p2=@VAL([Test1Q1].[Usages (KB)])
模式应匹配以@VAL开头、以第一个括号结尾的输入,并从上述输入中捕获以下内容:

[Test1Q1].[Bandwidth]
[Test1Q1].[Usages (KB)]
我尝试使用以下表达式:

var fieldPattern = /@VAL\((.*)\)/;
var P1_Pattern = p1.match(fieldPattern );
var P2_Pattern = p2.match(fieldPattern );
我得到了p1的正确匹配,但p2的结果是错误的。为了我得到的

但需要以下结果:

[Test1Q1].[Usages (KB)]

我知道这是因为它发生在p2结束之前;但我无法解决它。如何修改正则表达式以匹配p1和p2,并在其中捕获所需的值?

正如@Xero所评论的,该模式匹配提供的两个输入字符串

您可以确认这一点,并在以下代码段中查看如何获取捕获组的值:

var p1='@VAL[Test1Q1].[Bandwidth]'; var p2='@VAL[Test1Q1].[Usages KB]'; var fieldPattern=/@VAL\.\/; var P1_Pattern=P1.matchfieldPattern[1]; var P2_Pattern=P2.matchfieldPattern[1]; //目前:使用警报和控制台日志显示捕获组的值。 console.logP1_Pattern==='+P1_Pattern+'; 警报P1_模式=='+P1_模式+'; console.logP2_Pattern==='+P2_Pattern+';
警报P2_模式=='+P2_模式+';字符串总是以?Tested on结尾,效果很好。我不是JS正则表达式的专家,但我知道你的问题是匹配是非贪婪的,需要贪婪的。我会在谷歌上搜索贪婪的正则表达式javascript,看看能看到什么。注意:在我所知道的大多数语言中,正则表达式在默认情况下都是贪婪的,所以可能有一些东西是您意外地更新的,以使它在其他语言中工作way@TarynEast但他使用的是贪婪运算符。*@Xero是的-这就是为什么我说他得到一个非贪婪结果很奇怪的原因。@DavidKnipe:这是一个很好的问题。我看到过行动组认为他们的代码不起作用…然后发现它起作用了。明确回答他们的代码确实有效,事实上,这让他们意识到他们的代码确实有效,或者b重申它不适用于他们…通常带有一些额外的信息,说明原因,例如,环境差异,如所讨论的浏览器。希望我提供的答案将触发这个工作流程,以达到底线。
[Test1Q1].[Usages (KB)]