2013-02-07 83 views
2

我知道,已经有很多基于RegExp的解决方案,但是我找不到符合我需要的解决方案。扩展RegExp以获取文件扩展名

我有以下函数来获取URL的部分,但我也需要文件扩展名。

var getPathParts = function(url) { 
    var m = url.match(/(.*)[\/\\]([^\/\\]+)\.\w+$/); 
    return { 
     path: m[1], 
     file: m[2] 
    }; 
}; 

var url = 'path/to/myfile.ext'; 
getPathParts(url); // Object {path: "path/to", file: "myfile"} 

我不是很熟悉的正则表达式,也许你可以扩展这个正则表达式给出,得到的文件扩展吗?

如果文件扩展名包含第3(第4)个值,最好的方法是。例如: -

return { 
    path: m[1], 
    file: m[2], 
    ext: m[3] 
}; 
+0

你能给什么,你究竟想匹配和检索的例子吗? – aa8y

+0

@Expressions_Galore更新了问题:) – yckart

回答

2

只需添加一个捕获组,以获得最后\w+

var getPathParts = function(url) { 
    var m = url.match(/(.*)[\/\\]([^\/\\]+)\.(\w+)$/); 
    return { 
     path: m[1], 
     file: m[2], 
     ext: m[3] 
    }; 
}; 
+0

不错!在'file:m [2]'后面添加缺少的逗号,它是完美的: - * – yckart

+0

@yckart添加了逗号。谢谢。 –