RegEx, um die URL aus dem CSS-Hintergrundstyling zu extrahieren

7

Ich habe eine Zeichenfolge in dieser Form:

%Vor%

Dies ist von einem CSS-Stil für ein bestimmtes Element, das im Moment auf der Seite nicht sichtbar ist. Was ich tun muss, ist das Hintergrundbild vorab zu laden, aber dazu brauche ich seine URL, und ich versuche, einen regulären Ausdruck zu finden, der es findet.

Ich weiß, dass der Anteil von http://www.example.com/imgs/backgrounds/ konstant bleibt, die einzige Sache, die sich ändert, ist der Bildname selbst, der entweder mit .jpg oder .png enden kann.

Dies war ein Versuch:

%Vor%

Das Problem dabei war, dass nur der http://www.example.com/imgs/backgrounds/ -Teil abgeholt wurde. Also habe ich das versucht, aber das funktioniert überhaupt nicht!

%Vor%

Was mache ich falsch? Danke für jede Hilfe!

    
Sean Bone 31.12.2013, 12:28
quelle

5 Antworten

7

Erfasse einfach irgendetwas zwischen ( und )

%Vor%

FIDDLE

    
adeneo 31.12.2013, 12:31
quelle
17

Eine Hintergrund-URL kann ' oder " oder keine um die URL innerhalb der Klammer haben

Gültige URLs

  • url("http://www.example.com/imgs/backgrounds/bg80.jpg")
  • url('http://www.example.com/imgs/backgrounds/bg80.jpg')
  • url(http://www.example.com/imgs/backgrounds/bg80.jpg)

Für eine generische Lösung könnten Sie also

verwenden %Vor%     
Gaby aka G. Petrioli 31.12.2013 12:53
quelle
1

Ich denke, Gaby's Antwort ist fast korrekt, aber laut dieser Antwort können nicht angegebene CSS-URLs Zeichen mit Escape-Zeichen enthalten ( ex: background-image: url(http://foobar.com?\'\() ist ein gültiger Weg, um ein Hintergrundbild mit der URL http://foobar.com?') zu laden.Ein genauerer Ausdruck für die Erfassung aller URLs in einem Stylesheet ( testet hier ):

/[:,\s]\s*url\s*\(\s*(?:'(\S*?)'|"(\S*?)"|((?:\\s|\\)|\\"|\\'|\S)*?))\s*\)/gi

%Vor%     
AlexZ 08.12.2015 22:00
quelle
0

Hier ist also eine aufgeräumte Version, die sich nur auf Bilder & amp; konvertiert gefundene Bilder relative Pfade zu absolut. Auf diese Weise können Sie leicht vorladen. Dieser Code erstellt ein Array mit der ursprünglichen URL und der absoluten URL. Sie können das Ergebnis einfach durchlaufen und die absoluten URL-Bilder vorab laden

%Vor%

Hier funktioniert JSbin Ссылка

    
denisbetsi 05.06.2015 01:58
quelle
0

Ich mache es jetzt einfach und ich komme auf diese Seite also denke ich, mein Muster ist einfach und absolut:

/url(?:\([\'"\s]?)((?!data|http|\/\/)(\.\.?\/|\/))(.*?)(?:[\'"\s]?\))/g

    
Moshe Harush 21.05.2017 00:08
quelle

Tags und Links