我的网址如下:
http://localhost/assets/upload/img/hw6dNDBT-36x36.jpg
我想从上面的网址中提取hw6dNDBT.jpg
。
我尝试使用正则表达式模式/img\/.*-/
但是那样
与img/hw6dNDBT-
匹配。
我如何在JavaScript中执行此操作?
答案 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).[^.]+/,'');
我们在最后一个斜线之后取出所有东西然后切掉尺寸部分。