Да. Я бы пошел с регулярным выражением.
Вот пример:
var img_urls=[];
$('[style*="background"]').each(function() {
var style = $(this).attr('style');
var pattern = /background.*?url\('(.*?)'\)/g
var match = pattern.exec(style);
if (match) {
img_urls.push(match[1]);
//just for testing, not needed:
$('#result').append('<li>'+match[1]+'</li>');
}
});
Если возможно иметь URL-адреса в стиле, которые не являются частью фона, в то время как фон может быть без изображения, регулярное выражение должно быть более сложным, и для удобства сопровождения кода я бы просто добавил другое "если", а не чем сделать регулярное выражение с отрицательным взглядом (который многим людям трудно читать).
Итак, код будет выглядеть так:
var img_urls=[];
$('[style*="background"]').each(function() {
var style = $(this).attr('style');
var pattern = /background(.*?)url\('(.*?)'\)/ig
var match = pattern.exec(style);
if (match && match.length > 0) {
if (match[1].indexOf(';')>0) return;
img_urls.push(match[2]);
//just for testing, not needed:
$('#result').append('<li>'+match[2]+'</li>');
}
});
Вы можете поиграть с ним на этой скрипке:
http://jsfiddle.net/Exceeder/nKPbn/