2012-01-06 38 views
0

我试图在一组直括号之间的匹配号码,例如:JS正则表达式的问题

匹配的0actionFields[actionFields][0][data[Report][action]]

这是我到目前为止,我不断收到空。

var match, matchRegEx = /^\(?\[(\d)\]\)$/; 
nameAttr = "actionFields[actionFields][0][data[Report][action]]", 
match = matchRegEx.exec(nameAttr); 
+2

表达式尝试匹配字面括号中的数字('\(','\)'),但有没有在您的字符串。你为什么要在那里?另外,你的表达式被锚定在开始和结束处,所以只有诸如'([5])或'[3])'这样的字符串会被匹配。 – 2012-01-06 22:54:02

回答

3

如果你看看你的正则表达式,你匹配的字符串,零个或一个(的开始,那么[,然后\d,然后],然后),那么该字符串的结尾。

你就应该能够与/\[(\d)\]/逃脱,除非你不介意的[0]结构,以在字符串中的其他地方出现。

Here's a RegexPal显示这一点。

+0

完美的解释。谢谢。还要感谢你对RegexPal的这么大的帮助。 – 2012-01-09 03:28:03

1

你的正则表达式应该是:

\[(\d+)\] 

,并拍摄第一组。与您正则表达式

的一个问题是,它在输入(^的开始挂靠在结束$

1

如果有只有一个号码/\d+/ 只能测试