我有一個data.url字符串。我想從它那裏得到一些數據具有以下的正則表達式JavaScript正則表達式匹配只在圓括號內
var filename = data.url.match(/file=(.+)&/gi);
所有我想要的是括號-a文件名actually-但我找回裏面的數據是「文件= example.jpg &」。 這是怎麼回事?不僅應該返回括號中的匹配嗎? 如何擺脫這些不必要的字符?感謝
我有一個data.url字符串。我想從它那裏得到一些數據具有以下的正則表達式JavaScript正則表達式匹配只在圓括號內
var filename = data.url.match(/file=(.+)&/gi);
所有我想要的是括號-a文件名actually-但我找回裏面的數據是「文件= example.jpg &」。 這是怎麼回事?不僅應該返回括號中的匹配嗎? 如何擺脫這些不必要的字符?感謝
使用
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的解決方案。
Javascript
返回整個匹配模式(通常稱爲組0)以及其他匹配的組。你可以使用這個:
var filename = /file=(.+)&/gi.exec(data.url).slice(1);
嗯,如果你使用'[^&] +',那麼你可以安全地刪除'&?'在最後。除非OP特別想要匹配,如果有'&',在這種情況下,你不應該使用'?'。 – Jerry
@Jerry:謝謝!我將重寫我的解決方案到更短的正則表達式... ;-) –