我有一个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:谢谢!我将重写我的解决方案到更短的正则表达式... ;-) –