如何使用javascript从url字符串中提取url文件扩展名

时间:2011-08-09 13:53:38

标签: javascript file url

如何使用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

显然,此网址后面没有参数。

有人知道吗?

提前致谢

12 个答案:

答案 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=blahsomething.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);