2011-08-28 65 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

相關問題