我有一个应用程序,用于存储图像文件在DB中的相对路径。在将其插入数据库之前,我需要从路径中删除任何完全限定的URL。我正在使用以下内容。
$('img', this).attr('src').replace(/https?:\/\/[^\/]+/, '');
但是,这仍然会将/放在图像路径的前面
我从这个http://192.168.72.80/upload/11/img_3070.jpg
我希望最终得到这个。 上传/ 11 / img_3070.jpg
URL可以是IP域,因此我必须能够处理这两种情况。
由于
答案 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);
});
或者,使用函数:
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));
});
要使用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];
编辑2:
var url='http://192.168.72.80/upload/11/img_3070.jpg?id=4';
var img=url.toString().match(/[^\/?#]+(?=$|[?#])/);