2014-04-04 98 views
0

我有一個data.url字符串。我想從它那裏得到一些數據具有以下的正則表達式JavaScript正則表達式匹配只在圓括號內

var filename = data.url.match(/file=(.+)&/gi); 

所有我想要的是括號-a文件名actually-但我找回裏面的數據是「文件= example.jpg &」。 這是怎麼回事?不僅應該返回括號中的匹配嗎? 如何擺脫這些不必要的字符?感謝

回答

1

使用

var filename = data.url.match(/file=([^&]+)/i)[1]; 

實施例:

"file=example.jpg".match(/file=([^&]+)/i)[1] == "example.jpg" 
"file=example.jpg&b=ttt&c=42".match(/file=([^&]+)/i)[1] == "example.jpg" 
"http://example.com/index.php?file=example.jpg&b=ttt&c=42".match(/file=([^&]+)/i)[1] == "example.jpg" 

match()返回與第一組搜索在所述第二位置處,即在match(...)[1]陣列。

注意:上述代碼的結果將是一個字符串。如果你仍然想要一個單一數組作爲唯一的元素,那麼你應該採用@Sabuj Hassan的解決方案。

+0

嗯,如果你使用'[^&] +',那麼你可以安全地刪除'&?'在最後。除非OP特別想要匹配,如果有'&',在這種情況下,你不應該使用'?'。 – Jerry

+0

@Jerry:謝謝!我將重寫我的解決方案到更短的正則表達式... ;-) –

2

Javascript返回整個匹配模式(通常稱爲組0)以及其他匹配的組。你可以使用這個:

var filename = /file=(.+)&/gi.exec(data.url).slice(1);