我正在制作一个非常基本的Chrome扩展程序,主要用于个人用途和朋友之间的使用。在任何情况下,我基本上都有一个如下所示的URL:
i.imgur.com/abcd123.png
或
imgur.com/a2b3c78
甚至是
i.imgur.com/herp321.png?1
我在这些网址中唯一需要的是扩展前的7个字符代码。在这些示例中,abcd123
,a2b3c78
和herp321
。
我一直在运行一个.replace
,它不会像第三个例子那样捕获异常,甚至试图抛出一些正则表达式(我甚至无法正常运行) 。 URL常量的唯一部分如下,代码标记为x
:
imgur.com/xxxxxxxx
URL可能具有不同的开头,并且在7位代码之后立即变化,但上述内容是不变的。有没有办法只从上面的例子中提取这个字母数字文件名,无论URL或任何修饰符/扩展名添加到结尾的前言是什么?
答案 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);
}