正则表达式匹配文件以Javascript结尾

时间:2012-01-17 23:11:00

标签: javascript regex

我想从列表中的某些文件中获取文件结尾。

<a href="myfile.mp4">File 1</a>
<a href="http://www.files.com/myfile.ogg">File 2</a> 
<a href="myfile.mp3">File 3</a>
<a href="http://www.site.com/myfile.jpg">File 4</a>

基本上,文件结尾可以是任何东西,并且字符串可以包含多于一个“。”。所以我只需要获取结尾。

我想得到一个看起来像的结果:

mp4
ogg
mp3
jpg

感谢。

5 个答案:

答案 0 :(得分:2)

您可以获取文档中所有链接的扩展名:

var endings = [];
var links = document.getElementsByTagName("a");
var matches;
for (var i = 0; i < links.length; i++) {
    if (links[i].href) {
        matches = links[i].href.match(/\.([^\.]+)$/);
        if (matches) {
            endings.push(matches[1]);
        }
    }
}
// the array endings contains a list of all link extensions

以下是代码的工作版本:http://jsfiddle.net/jfriend00/XHKaT/

此处的正则表达式匹配一个句点,后跟字符串末尾的一个或多个非句点字符。带括号的分组允许我们在没有完成您概述的结果的句点的情况下额外添加扩展名。

答案 1 :(得分:1)

您可以使用jQuery:

  1. 获取所有锚元素。
  2. 对于每个元素,您可以访问.attr(“href”)值,该值将是您的地址字符串,即“myfile.mp3”
  3. 然后你可以在“。”上拆分字符串。将tokenArray [tokenArray.length-1]中的值添加到结果列表中。
  4. 或者对于vanilla JS尝试:

    function getExtensions(){
        var allAnchorTags = document.getElementsByTagName("a");
        var extensions = new Array();
    
        for(var i = 0; i < allAnchorTags.length; i++){
            var tokenArray = allAnchorTags[i].href.split(".");
            extensions[i] = tokenArray[tokenArray.length-1];
        }  
    
        return extensions;
    }
    
    除了使用vanilla JS语法之外,

    与我的算法中描述的相同。试一试

答案 2 :(得分:1)

此功能可根据需要执行,无需报告重复项并维护文件扩展名的发现顺序。

function getLinkedFileExtensions() {
  var i, len=document.links.length, ext=[], exts={};
  for (i=0; i<len; i++) {
    var a = document.links[i];
    if (a.href && a.href.match(/\.([A-Za-z0-9]{1,4})$/)) {
      var x = RegExp.$1;
      if (!(x in exts)) {
        exts[x] = true;
        ext.push(x);
      }
    }
  }
  return ext;
}

答案 3 :(得分:1)

var ext = [].map.call(document.links, function (a) {
    return (a.href.match(this) || [])[1] || "";
}, /\.([a-zA-Z0-9]*)$/).filter(String);

http://jsfiddle.net/hZ9cU/

答案 4 :(得分:0)

参见 Feedle

var ext = a.href.split(".");
ext = ext[ext.length -1];
console.log(ext);

编辑:

var d = document.getElementsByTagName("a"),
    ext, i, j;

for(i = 0, j = d.length; i<j; i++){
            ext = d[i].href.split(".");
            ext = ext[ext.length -1];
            console.log(ext);
 }
相关问题