从图像URL抓取文件名

时间:2013-12-19 15:10:15

标签: javascript regex imgur

我正在制作一个非常基本的Chrome扩展程序,主要用于个人用途和朋友之间的使用。在任何情况下,我基本上都有一个如下所示的URL:

i.imgur.com/abcd123.pngimgur.com/a2b3c78甚至是 i.imgur.com/herp321.png?1

我在这些网址中唯一需要的是扩展前的7个字符代码。在这些示例中,abcd123a2b3c78herp321

我一直在运行一个.replace,它不会像第三个例子那样捕获异常,甚至试图抛出一些正则表达式(我甚至无法正常运行) 。 URL常量的唯一部分如下,代码标记为x

imgur.com/xxxxxxxx

URL可能具有不同的开头,并且在7位代码之后立即变化,但上述内容是不变的。有没有办法只从上面的例子中提取这个字母数字文件名,无论URL或任何修饰符/扩展名添加到结尾的前言是什么?

4 个答案:

答案 0 :(得分:4)

matched=str.match(/imgur.com\/(.{7})/);
//matched[1] will have your result

答案 1 :(得分:1)

一种简单的方法:

 var text   = 'i.imgur.com/herp321.png?1'
 var regex  = /imgur\.com\/(\w{7})/;

 console.log(text.match(regex)[1]);

答案 2 :(得分:0)

你可以试试这个:

/.+\/([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

答案 3 :(得分:0)

您可以将匹配函数与正则表达式一起使用。

编辑:

这应该有效:

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);
}