我想从列表中的某些文件中获取文件结尾。
<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
感谢。
答案 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:
或者对于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);
答案 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);
}