我有一个看起来像这样的网址:如何使用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