2011-08-28 53 views
1

仍然完全卡在正则表达式和方括号中。希望有人能帮助我。抓取方括号中的第三个片段

说我有一个这样的字符串:

room_request[1][1][2011-08-21]

我怎么会抢第三个片段出来的吗?

我尝试了以下方法,但我并不完全确定自己在做什么,所以很难弄清楚我要出错的地方。

.match(/\[(.*?)\]/);

但这返回[1]片段。 (我想第一个)。 那么,我问这里SO和人告诉我加入一个全球性的标志:

.match(/\[(.*?)\]/g)[2];

在,我用这个表达式其他情况下,这工作得很好。但是,在这种情况下,我想要内部方括号内的东西。它返回:

[2011-08-21]

但我真的想2011-08-21

我怎样才能做到这一点?非常感谢。

如果任何人都可以推荐任何有关正则表达式的体面资源,那也会很棒。我开始理解非常基础知识,但大部分这些东西都令人困惑。谢谢。

回答

1

两种可能的方法。抢第三括号内的表达式:

.match(/\[.*?\]\[.*?\]\[(.*?)\]/); 

或者,如果你知道你要表达的是总是在字符串的结尾:

.match(/\[(.*?)\]$/); 
+0

非常感谢!工作很好:) – cabaret

1
var str = "room_request[1][1][2011-08-21]" 
var val = str.match(/\[[^\]]*\]\[[^\]]*\]\[([^\]]*)\]/); 
alert(val[1]); 
0

这是有点不太凌乱我认为:

var r = "room_request[1][1][2011-08-21]"; 
var match = r.match(/(?:\[([^\]]+)\]){3}/); 
console.log(match[1]); 

基本上,它挑选出容纳东西方括号的第三场比赛。你得到的比赛结果返回两场比赛 - 整个[1] [1] [2011-08-21](无论什么原因)和匹配的日期:2011-08-21

我的正则表达式有点生锈,但这当然有效。

+1

此外,这是一个不错的备忘单:http://www.javascriptkit.com/jsref/regexp.shtml 不要忘了http://www.regular-expressions.info/javascriptexample.html - 你可以在那里测试你的正则表达式。 – Stephen