You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript从文件路径中提取无扩展名的文件名?

提取不含扩展名的文件名(JavaScript)

你已经通过var documentName = $('#documentFile').val().split('\\').pop();拿到了带扩展名的文件名(比如report.pdf或者image.png),接下来只需要对这个documentName做进一步处理就能得到不含扩展名的部分。下面给你几种实用的方案:

方法1:lastIndexOf + slice(直观兼容)

这个方法核心是定位最后一个.的位置,再截取前面的内容,同时考虑边缘情况:

var documentName = $('#documentFile').val().split('\\').pop();
var fileNameWithoutExt;

// 找到最后一个点的索引
const lastDotPos = documentName.lastIndexOf('.');
// 排除隐藏文件(比如.gitignore)和无扩展名的情况
if (lastDotPos > 0) {
    fileNameWithoutExt = documentName.slice(0, lastDotPos);
} else {
    fileNameWithoutExt = documentName;
}

方法2:正则表达式(简洁灵活)

用正则匹配并移除最后一个.及其后续内容,自动适配多数场景:

var documentName = $('#documentFile').val().split('\\').pop();
// 匹配最后一个点及之后的扩展名,替换为空
const fileNameWithoutExt = documentName.replace(/\.[^/.]+$/, '');

这个正则会跳过无扩展名的文件,也不会误处理.gitignore这类以.开头的隐藏文件。

方法3:拆分拼接(处理多扩展名场景)

如果你的文件名包含多个.(比如archive.tar.gz),想要保留前面的部分(得到archive.tar),可以用这种方式:

var documentName = $('#documentFile').val().split('\\').pop();
const nameParts = documentName.split('.');
// 有扩展名就去掉最后一段再拼接,没有就直接返回原文件名
const fileNameWithoutExt = nameParts.length > 1 ? nameParts.slice(0, -1).join('.') : documentName;

额外优化:兼容跨平台路径

如果路径可能出现Unix风格的/,可以把路径拆分的代码改成:

var documentName = $('#documentFile').val().split(/[\\/]/).pop();

内容的提问来源于stack exchange,提问作者Iam_NSA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:05:39