我有一个data.url字符串。我希望通过以下正则表达式从中获取一些数据
var filename = data.url.match(/file=(.+)&/gi);
我想要的只是括号内的数据 - 实际上是一个文件名 - 但我得到的是" file = example.jpg&"。 为什么会这样?不应该仅返回括号中找到的匹配项吗? 我怎样才能摆脱那些不必要的角色?感谢
答案 0 :(得分:2)
Javascript
返回整个匹配模式(通常称为组-0)以及其他匹配的组。你可以使用这个:
var filename = /file=(.+)&/gi.exec(data.url).slice(1);
答案 1 :(得分: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的解决方案。