从Image path jquery中删除完整的URL

时间:2014-11-18 22:35:43

标签: jquery regex

我有一个应用程序,用于存储图像文件在DB中的相对路径。在将其插入数据库之前,我需要从路径中删除任何完全限定的URL。我正在使用以下内容。

$('img', this).attr('src').replace(/https?:\/\/[^\/]+/, ''); 

但是,这仍然会将/放在图像路径的前面

我从这个http://192.168.72.80/upload/11/img_3070.jpg

开始

我希望最终得到这个。 上传/ 11 / img_3070.jpg

URL可以是IP域,因此我必须能够处理这两种情况。

由于

2 个答案:

答案 0 :(得分:1)

要获取图像元素的路径,假设选择器$('img', this)返回正确的元素,您可以避免使用正则表达式,因为老实说,它避免了正则表达式中边缘情况带来的问题,以及只需使用创建的 - <a>元素及其伴随属性:

var a = document.createElement('a'),
    images = document.images;

Array.prototype.forEach.call(images, function (img) {
    a.href = img.src;
    console.log(a.pathname);
});

JS Fiddle demo

或者,使用函数:

function retrievePathName (img) {
    var a = document.createElement('a');
    a.href = img.src;
    return a.pathname;
}

var images = document.images;

Array.prototype.forEach.call(images, function (imgNode) {
    console.log(retrievePathName(imgNode));
});

JS Fiddle demo

要使用jQuery方法,您可以:

var path = retrievePathName($('img', this).get(0));

或者:

var paths = $('img', this).map(function () {
    return retrievePathName(this);
}).get(); // returns an array of relative paths to the 'paths' variable

参考文献:

答案 1 :(得分:1)

var url='http://192.168.72.80/upload/11/img_3070.jpg';

var img=url.toString().match(/\/\/[^\/]+\/([^\.]+)/)[1];

http://jsfiddle.net/040o8zt0/

编辑2:

var url='http://192.168.72.80/upload/11/img_3070.jpg?id=4';
var img=url.toString().match(/[^\/?#]+(?=$|[?#])/);