Javascript正则表达式仅匹配括号内

时间:2014-04-04 18:44:05

标签: javascript regex

我有一个data.url字符串。我希望通过以下正则表达式从中获取一些数据

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

我想要的只是括号内的数据 - 实际上是一个文件名 - 但我得到的是" file = example.jpg&"。 为什么会这样?不应该仅返回括号中找到的匹配项吗? 我怎样才能摆脱那些不必要的角色?感谢

2 个答案:

答案 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的解决方案。