const regex = /background-image:url\(["']?([^"']*)["']?\)/gm;
const str = `<div style="background-image:url('http://www.example.com/img.png');">...</div>`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
var element = document.getElementById('divId');
var prop = window.getComputedStyle(element).getPropertyValue('background-image');
var re = /url\((['"])?(.*?)\1\)/gi;
var matches;
while ((matches = re.exec(prop)) !== null) {
console.log(matches[2]);
}
6条答案
按热度按时间jv4diomz1#
你可以试试这个:
x一个一个一个一个x一个一个二个x
基于@Miguel和下面的其他评论,如果您的浏览器(IE/FF/Chrome ...)将其添加到URL中,您可以尝试删除额外的引号:
如果可能包括单引号,则使用:
replace(/['"]/g, "")
rwqw0loc2#
如果其他人也有类似的想法,那么再补充一下,你也可以使用Regex:
然而,根据jsPerf的数据,@Praveen的解决方案在Safari和Firefox中的表现似乎更好:http://jsperf.com/match-vs-slice-and-replace
如果要考虑值包含引号但不确定是双引号还是单引号的情况,可以执行以下操作:
5vf7fwbs3#
试试这个
或者,使用
replace
:tquggr8v4#
首先,您需要返回背景图像内容:
这将返回如下所示的URL:
“网址(' http://www.example.com/img.png ')”
然后您需要删除此URL中不需要的部分:
7jmck4yq5#
xdnvmnnf6#
记录到控制台的所有
background-image
URL,不带括号和引号: