2016-05-13 61 views
0

我有一個看起來像這樣的網址:如何使用JavaScript提取此網址的一部分?

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

我想提取hw6dNDBT.jpg,從上面的網址。

我試着玩正則表達式模式/img\/.*-/但 匹配img/hw6dNDBT-

我該如何在JavaScript中做到這一點?

+1

你能展示你的代碼嗎?你很近(你只需要一個捕獲組),但看到你現有的代碼將使我們能夠更具體地回答。 –

+0

你需要讓你的正則表達式在img部分不選擇,但仍然匹配。我知道它可能雖然不記得如何。除此之外,您還可以使用帶有索引函數的分割函數來查找'img /',然後再拉取所有內容。 –

+1

路徑總是以'.jpg'結尾,並且/或者它總是包含'-36x36'?這些數字會長短不一嗎? – WillardSolutions

回答

1

試試這個:

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

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

0

/[^\/]+$/應匹配網址中最後一個/後面的所有字符,這似乎是您想要匹配的內容。

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]; 
    } 
} 
0

啊,你是如此接近!你只需要採取你的正則表達式,並使用捕獲組,然後再添加更多!

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

所以,你可以使用這種方式:

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

老實說捕捉.jpg,是有點過分,如果你知道他們都將是JPG圖片,你可能只取出正則表達式的後半部分。

因爲您想知道,爲什麼我們使用result[1]result[2]?因爲result[0]存儲整個匹配,這是你回來的。捕獲的羣體,這是我們創建當我們使用括號,後0

0

這裏存儲的索引是一些一行代碼:

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

我們採取一切後,最後一個斜線再砍出尺寸部分。