Javascript 从图像URL抓取文件名
我正在做一个非常基本的Chrome扩展,主要用于个人和朋友之间的使用。在任何情况下,我的URL基本上如下所示:Javascript 从图像URL抓取文件名,javascript,regex,imgur,Javascript,Regex,Imgur,我正在做一个非常基本的Chrome扩展,主要用于个人和朋友之间的使用。在任何情况下,我的URL基本上如下所示: i.imgur.com/abcd123.png或 imgur.com/a2b3c78甚至 i.imgur.com/herp321.png?1 从这些URL中,我唯一需要的是扩展之前的7个字符的代码。在这些示例中,abcd123、a2b3c78和herp321 我一直在运行一个.replace,它不会像第三个示例那样捕获异常,甚至试图抛出一些正则表达式(我甚至无法接近正常运行)。URL中
i.imgur.com/abcd123.png
或
imgur.com/a2b3c78
甚至
i.imgur.com/herp321.png?1
从这些URL中,我唯一需要的是扩展之前的7个字符的代码。在这些示例中,abcd123
、a2b3c78
和herp321
我一直在运行一个.replace
,它不会像第三个示例那样捕获异常,甚至试图抛出一些正则表达式(我甚至无法接近正常运行)。URL中唯一不变的部分如下所示,代码标记为x
:
imgur.com/xxxxxxxx
URL可能有一个不同的开头,在7位代码之后有一个不同的结尾,但上面的内容是不变的。是否有一种方法可以从上面的示例中仅提取此字母数字文件名,而不管URL的开头是什么或在末尾添加了任何修改器/扩展名?您可以尝试以下方法:
/.+\/([a-z0-9]+).+/
在JS中:
var imgUrl = 'i.imgur.com/dsf8635235.png?sdgdsgdsg'
, matches = imgUrl.match( /.+\/([a-z0-9]+).+/ );
console.log( matches[ 1 ] ); // dsf8635235
一些变化:
console.log( 'imgur.com/dsf8635235'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
console.log( 'i.imgur.com/dsf8635235'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
console.log( 'imgur.com/dsf8635235?1'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
等等。您可以尝试以下方法:
/.+\/([a-z0-9]+).+/
在JS中:
var imgUrl = 'i.imgur.com/dsf8635235.png?sdgdsgdsg'
, matches = imgUrl.match( /.+\/([a-z0-9]+).+/ );
console.log( matches[ 1 ] ); // dsf8635235
一些变化:
console.log( 'imgur.com/dsf8635235'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
console.log( 'i.imgur.com/dsf8635235'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
console.log( 'imgur.com/dsf8635235?1'.match( /.+\/([a-z0-9]+).+/ )[ 1 ] ); // dsf8635235
等等。一个简单的方法:
var text = 'i.imgur.com/herp321.png?1'
var regex = /imgur\.com\/(\w{7})/;
console.log(text.match(regex)[1]);
一个简单的方法:
var text = 'i.imgur.com/herp321.png?1'
var regex = /imgur\.com\/(\w{7})/;
console.log(text.match(regex)[1]);
可以将match函数与正则表达式一起使用 编辑: 这应该起作用:
var urls = ["i.imgur.com/abcd123.png", "imgur.com/a2b3c78", "i.imgur.com/herp321.png?1"];
var reg = /\/(.{7})/;
for(i=0;i<urls.length;i++) {
reg.exec(urls[i]);
console.log(RegExp.$1);
}
var url=[“i.imgur.com/abcd123.png”、“imgur.com/a2b3c78”、“i.imgur.com/herp321.png?1”];
var reg=/\/(.{7})/;
对于(i=0;i,可以使用带有正则表达式的match函数
编辑:
这应该起作用:
var urls = ["i.imgur.com/abcd123.png", "imgur.com/a2b3c78", "i.imgur.com/herp321.png?1"];
var reg = /\/(.{7})/;
for(i=0;i<urls.length;i++) {
reg.exec(urls[i]);
console.log(RegExp.$1);
}
var url=[“i.imgur.com/abcd123.png”、“imgur.com/a2b3c78”、“i.imgur.com/herp321.png?1”];
var reg=/\/(.{7})/;
对于(i=0;我似乎不起作用。它吐出的值如下:[”http://i.imgur.com/M5rtaNS.jpg,“i”,索引:0,输入:http://i.imgur.com/M5rtaNS.jpg"]
正确。match
函数返回Array
,您可以在控制台中看到。log
我得到数组的1
索引,该数组包含您需要的字符串。我打印出了整个matches
变量。在索引1处,您可以看到值是I
。似乎不起作用。它正在吐出vaLUE是这样的:[”http://i.imgur.com/M5rtaNS.jpg,“i”,索引:0,输入:http://i.imgur.com/M5rtaNS.jpg"]
正确。match
函数返回Array
,正如您在控制台中看到的。log
我得到数组的1
索引,该数组包含您需要的字符串。我打印出了整个matches
变量。在索引一,您可以看到值是I
。运气不好,我会吐出这些值://i.imgu”,索引:5,输入:http://i.imgur.com/qvjrnFL.jpg]
运气不好,吐出以下值:“//i.imgu”,索引:5,输入:http://i.imgur.com/qvjrnFL.jpg“]