如何使用JavaScript提取此网址的一部分?

时间:2016-05-13 14:49:17

标签: javascript

我的网址如下:

http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg

我想从上面的网址中提取hw6dNDBT.jpg

我尝试使用正则表达式模式/img\/.*-/但是那样 与img/hw6dNDBT-匹配。

我如何在JavaScript中执行此操作?

6 个答案:

答案 0 :(得分:1)

试试这个:

var url = 'http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg';
var filename = url.match(/img\/(.*)-[^.]+(\.[^.]+)/).slice(1).join('');
document.body.innerHTML = filename;

答案 1 :(得分:0)

我会使用split()方法:

var str = "http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg";
var strArr = str.split("/");
var size = strArr.length - 1;
var needle = strArr[size].split("-");
var fileTypeArr = strArr[size].split(".");
var name = needle[0]+"."+fileTypeArr[fileTypeArr.length-1];

name现在应该是您搜索过的字符串到目前为止它里面没有/

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

答案 2 :(得分:0)

/[^\/]+$/应匹配网址中最后一个/之后的所有字符,这似乎是您要匹配的内容。

答案 3 :(得分:0)

没有正则表达式:

//this is a hack that lets the anchor tag do some parsing for you
var parser = document.createElement('a');
parser.href = 'http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg';

//optional if you know you can always trim the start of the path
var path = parser.pathname.replace('/assets/uploads/');
var parts = path.split('/');
var img = '';

for(var i=0; i<parts.length; i++) {
    if (parts[i] == 'img') {
        //since we know the .jpg always follows 'img/'
        img = parts[i+1];
    }
}

答案 4 :(得分:0)

啊,你太近了!您只需要使用正则表达式并使用捕获组,然后再添加一点点!

img\/(.*)-.*(\..*)

所以,你可以这样使用它:

var result = /img\/(.*)-.*(\..*)/.exec();
var filename = result[1] + result[2];

老实说捕获.jpg,有点过分,如果你知道它们都是JPG图像,你可能只需要取出正则表达式的后半部分。

如果你想知道,为什么我们使用result[1]result[2]?因为result[0]存储了整个匹配,这就是您要回来的内容。捕获的组是我们在使用括号时创建的,在0之后存储为索引。

答案 5 :(得分:0)

这是一些单行:

var myUrl = 'http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg',
    myValue = myUrl.split('/').pop().replace(/-(?=\d).[^.]+/,'');

我们在最后一个斜线之后取出所有东西然后切掉尺寸部分。