看代码:

var file1 = "50.xsl";
var file2 = "30.doc";
getFileExtension(file1); //returns xsl
getFileExtension(file2); //returns doc

function getFileExtension(filename) {
    /*TODO*/
}

当前回答

var extension = fileName.substring(fileName.lastIndexOf('.')+1);

其他回答

还有一个使用ES6解构的简单方法:

Const path = 'hello.world.txt' const[扩展,…nameParts] = path.split('.').reverse(); console.log(扩展:,扩展);

我刚刚意识到,对p4bl0的回答发表评论是不够的,尽管Tom的回答显然解决了问题:

return filename.replace(/^.*?\.([a-zA-Z0-9]+)$/, "$1");

对于大多数应用程序,一个简单的脚本,如

return /[^.]+$/.exec(filename);

会工作得很好(由汤姆提供)。然而,这并非万无一失。如果提供了以下文件名,它将不起作用:

image.jpg?foo=bar

这可能有点过分,但我建议使用这样的url解析器来避免由于不可预测的文件名而导致的失败。

使用这个特定的函数,你可以得到这样的文件名:

var trueFileName = parse_url('image.jpg?foo=bar').file;

这将输出“image.jpg”,不带url变量。然后您就可以获取文件扩展名了。

Wallacer的回答很好,但还需要再检查一下。

如果文件没有扩展名,它将使用filename作为扩展名,这是不好的。

试试这个:

return ( filename.indexOf('.') > 0 ) ? filename.split('.').pop().toLowerCase() : 'undefined';
var parts = filename.split('.');
return parts[parts.length-1];