如何在javascript中可靠地获取没有后缀的文件名?
通过删除javascript中的后缀来获取文件名的可靠方法是什么 我有一份档案,比如说: 及 现在我要拿绳子 replace()函数不是我想要的,因为图像文件名可能有许多不同类型的后缀 也许regex是最好的 如果是的话,它的可靠代码是什么如何在javascript中可靠地获取没有后缀的文件名?,javascript,regex,filenames,Javascript,Regex,Filenames,通过删除javascript中的后缀来获取文件名的可靠方法是什么 我有一份档案,比如说: 及 现在我要拿绳子 replace()函数不是我想要的,因为图像文件名可能有许多不同类型的后缀 也许regex是最好的 如果是的话,它的可靠代码是什么 提前感谢替换函数可能就是您想要的,它可以接受正则表达式作为搜索模式: url = url.replace(/_[^\/]+(\.[^\/]*)$/, "$1"); 该表达式的作用是: 查找后面没有任何斜杠的。(因此我们只查看路径中的最后一段) 允许在之后
提前感谢替换函数可能就是您想要的,它可以接受正则表达式作为搜索模式:
url = url.replace(/_[^\/]+(\.[^\/]*)$/, "$1");
该表达式的作用是:
- 查找后面没有任何斜杠的
(因此我们只查看路径中的最后一段)。
- 允许在
之后使用任意数量的非斜杠字符
- 停止匹配最后一个
后跟零个或多个字符的字符(我假设这些字符总是有扩展名);捕获
及其后面的字符(例如扩展名) - 仅用
及其后的扩展名替换整体匹配。(替换字符串中的
是特殊的,它表示“使用第一个捕获组的值”。)$1
?
,就在$
前面:/\u[^\/]+(\.[^\/]*)?$/
(这使得捕获组中的所有内容都是可选的)
例如:
例子
身体{
字体系列:monospace;
}
(功能(){
“严格使用”;
测试(”http://example.com/uploads/images/a51dd42_thumb.jpg");
测试(”http://example.com/uploads/images/a51dd42_s.jpg");
功能测试(url){
显示(“前:”+url);
url=url.replace(/\[^\/]+(\.[^\/]*)$/,“$1”);
显示(“后:”+url);
}
功能显示(msg){
var p=document.createElement('p');
p、 innerHTML=字符串(msg);
文件.正文.附件(p);
}
})();
您可以使用:
var s = 'http://example.com/uploads/images/a51dd42_thumb.jpg';
var r = s.replace(/^(.+?)_[^.]+(\.[^\/.]+)$/i, '$1$2');
//=> http://example.com/uploads/images/a51dd42.jpg
别着急
var start = Filename.split('_')[0],
file = Filename.split('_')[1],
end = file.split('.')[1];
console.log(start + '.' + end);
.它总是有
\uu
在里面吗?那么你想摆脱\u
和之间的东西,包括\u
本身。谢谢。你的代码似乎依赖于像jpg这样的扩展。有没有更好的方法可以适应任何类型的扩展?谢谢。我需要的就是这样,我正在标记答案为check.:)很奇怪,如果我有两个下划线,比如a51dd42_profile_thumb.jpg,会怎么样?我用本地脚本测试了它,但它同时替换了_profile和_thumb@MarkBonnieVestil:如果您希望它最终成为a51dd42_profile.jpg
,我们将执行与以前相同的操作,以避免在路径的早期段中匹配:Exclu将\
从它后面可能的字符(可能在两个位置)中删除。因此,如果扩展名是可选的,那么我们最终得到:/\[^\/\+(\.[^\/\/\*)$/
(或者/\[^\/\\]+(\.[^\/\]*)?$/
。-(这个正则表达式看起来有点生气,不是吗?;-D)
var start = Filename.split('_')[0],
file = Filename.split('_')[1],
end = file.split('.')[1];
console.log(start + '.' + end);