我有一個看起來像這樣的網址:如何使用JavaScript提取此網址的一部分?
http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg
我想提取hw6dNDBT.jpg
,從上面的網址。
我試着玩正則表達式模式/img\/.*-/
但 匹配img/hw6dNDBT-
。
我該如何在JavaScript中做到這一點?
我有一個看起來像這樣的網址:如何使用JavaScript提取此網址的一部分?
http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg
我想提取hw6dNDBT.jpg
,從上面的網址。
我試着玩正則表達式模式/img\/.*-/
但 匹配img/hw6dNDBT-
。
我該如何在JavaScript中做到這一點?
試試這個:
var url = 'http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg';
var filename = url.match(/img\/(.*)-[^.]+(\.[^.]+)/).slice(1).join('');
document.body.innerHTML = filename;
我會用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
/[^\/]+$/
應匹配網址中最後一個/
後面的所有字符,這似乎是您想要匹配的內容。
沒有正則表達式:
//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];
}
}
啊,你是如此接近!你只需要採取你的正則表達式,並使用捕獲組,然後再添加更多!
img\/(.*)-.*(\..*)
所以,你可以使用這種方式:
var result = /img\/(.*)-.*(\..*)/.exec();
var filename = result[1] + result[2];
老實說捕捉.jpg
,是有點過分,如果你知道他們都將是JPG圖片,你可能只取出正則表達式的後半部分。
因爲您想知道,爲什麼我們使用result[1]
和result[2]
?因爲result[0]
存儲整個匹配,這是你回來的。捕獲的羣體,這是我們創建當我們使用括號,後0
這裏存儲的索引是一些一行代碼:
var myUrl = 'http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg',
myValue = myUrl.split('/').pop().replace(/-(?=\d).[^.]+/,'');
我們採取一切後,最後一個斜線再砍出尺寸部分。
你能展示你的代碼嗎?你很近(你只需要一個捕獲組),但看到你現有的代碼將使我們能夠更具體地回答。 –
你需要讓你的正則表達式在img部分不選擇,但仍然匹配。我知道它可能雖然不記得如何。除此之外,您還可以使用帶有索引函數的分割函數來查找'img /',然後再拉取所有內容。 –
路徑總是以'.jpg'結尾,並且/或者它總是包含'-36x36'?這些數字會長短不一嗎? – WillardSolutions