如何使用javascript找到网址的文件扩展名? 示例网址:
http://www.adobe.com/products/flashplayer/include/marquee/design.swf?width=792&height=294
我只想要整个网址的'swf'。 如果网址也采用以下格式,我需要它来查找扩展名
http://www.adobe.com/products/flashplayer/include/marquee/design.swf
显然,此网址后面没有参数。
有人知道吗?
提前致谢
答案 0 :(得分:16)
这样的事可能吗?
var fileName = 'http://localhost/assets/images/main.jpg';
var extension = fileName.split('.').pop();
console.log(extension, extension === 'jpg');
您在控制台中看到的结果是。
jpg true
如果出于某种原因,您有一个类似something.jpg?name=blah
或something.jpg#blah
的网址,那么您可以
extension = extension.split(/\#|\?/g)[0];
放入
var fileExtension = function( url ) {
return url.split('.').pop().split(/\#|\?/)[0];
}
答案 1 :(得分:8)
对于扩展程序,您可以使用此功能:
function ext(url) {
// Remove everything to the last slash in URL
url = url.substr(1 + url.lastIndexOf("/"));
// Break URL at ? and take first part (file name, extension)
url = url.split('?')[0];
// Sometimes URL doesn't have ? but #, so we should aslo do the same for #
url = url.split('#')[0];
// Now we have only extension
return url;
}
或更短:
function ext(url) {
return (url = url.substr(1 + url.lastIndexOf("/")).split('?')[0]).split('#')[0].substr(url.lastIndexOf("."))
}
示例:
ext("design.swf")
ext("/design.swf")
ext("http://www.adobe.com/products/flashplayer/include/marquee/design.swf")
ext("/marquee/design.swf?width=792&height=294")
ext("design.swf?f=aa.bb")
ext("../?design.swf?width=792&height=294&.XXX")
ext("http://www.example.com/some/page.html#fragment1")
ext("http://www.example.com/some/dynamic.php?foo=bar#fragment1")
注意:
文件扩展名在开头提供了点(.
)。因此,如果result.charat(0) != "."
没有扩展名。
答案 2 :(得分:7)
function get_url_extension( url ) {
return url.split(/\#|\?/)[0].split('.').pop().trim();
}
示例:
get_url_extension('https://example.com/folder/file.jpg?param.eter#hash=12.345');
//output ------> jpg
答案 3 :(得分:6)
这就是答案:
var extension = path.match(/\.([^\./\?]+)($|\?)/)[1];
答案 4 :(得分:3)
看看regular expressions。具体来说,就像/([^.]+.[^?])\?/
。
答案 5 :(得分:0)
var doc = document.location.toString().substring(document.location.toString().lastIndexOf("/"))
alert(doc.substring(doc.lastIndexOf(".")))
答案 6 :(得分:0)
// Gets file extension from URL, or return false if there's no extension
function getExtension(url) {
// Extension starts after the first dot after the last slash
var extStart = url.indexOf('.',url.lastIndexOf('/')+1);
if (extStart==-1) return false;
var ext = url.substr(extStart+1),
// end of extension must be one of: end-of-string or question-mark or hash-mark
extEnd = ext.search(/$|[?#]/);
return ext.substring (0,extEnd);
}
答案 7 :(得分:0)
url.split('?')[0].split('.').pop()
通常#hash不是网址的一部分,而是单独处理
答案 8 :(得分:0)
您可以使用(相对)新的URL
对象来帮助您解析URL。属性pathname
尤其有用,因为它返回的URL路径不包含主机名和参数。
let url = new URL('http://www.adobe.com/products/flashplayer/include/marquee/design.swf?width=792&height=294');
// the .pathname method returns the path
url.pathname; // returns "/products/flashplayer/include/marquee/design.swf"
// now get the file name
let filename = url.pathname.split('/').reverse()[0]
// returns "design.swf"
let ext = filename.split('.')[1];
// returns 'swf'
答案 9 :(得分:0)
function ext(url){
var ext = url.substr(url.lastIndexOf('/') + 1),
ext = ext.split('?')[0],
ext = ext.split('#')[0],
dot = ext.lastIndexOf('.');
return dot > -1 ? ext.substring(dot + 1) : '';
}
答案 10 :(得分:0)
此方法可以正常工作:
function getUrlExtension(url) {
try {
return url.split('/').pop().match(/^[\w\s-,.]+\.([a-zA-Z0-9]{3,4})/)[1]
} catch (ignored) {
return false;
}
}
答案 11 :(得分:-1)
var fileExtension = function( url ) {
var length=url.split(?,1);
return length
}
document.write("the url is :"+length);