无法将输入字符串与')'匹配在结束之前

时间:2015-01-05 06:28:31

标签: 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.match(fieldPattern );
var P2_Pattern = p2.match(fieldPattern );

我得到p1的正确匹配,但p2的结果错误。对于p2我得到了

[Test1Q1].[Usages (KB 

但需要以下结果:

[Test1Q1].[Usages (KB)]

我知道这是因为)发生在p2结束之前;但我无法解决它。如何修改我的正则表达式以匹配p1p2并捕获我想要的值?

1 个答案:

答案 0 :(得分:0)

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

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

var p1='@VAL([Test1Q1].[Bandwidth])';
var p2='@VAL([Test1Q1].[Usages (KB)])';
var fieldPattern = /@VAL\((.*)\)/;
var P1_Pattern = p1.match(fieldPattern)[1];
var P2_Pattern = p2.match(fieldPattern)[1];
// FORNOW: Use alerts and console logging to show the capture groups' values.
console.log("P1_Pattern === '" + P1_Pattern + "'");
alert("P1_Pattern === '" + P1_Pattern + "'");
console.log("P2_Pattern === '" + P2_Pattern + "'");
alert("P2_Pattern === '" + P2_Pattern + "'");

该代码段应输出以下内容:

P1_Pattern === '[Test1Q1].[Bandwidth]'
P2_Pattern === '[Test1Q1].[Usages (KB)]'