(JavaScript) Reguläre Audrücke für replace
-
Guten morgen zusammen
Ich hab ein Problem mit dem Finden von bestimmten Stylesheet angaben. Ich möchte gerne das Stylesheet "background" und seine möglichen Varianten entfernen, via JavaScript.
Nehmen wir folgenden Beispiel-Code:
<p dir=ltr style="MARGIN-RIGHT: 0px; background-image: url ( '/test/ha 2132ha/asd_i-mage.jpeg') #000; background-color: #ff0000"> Irgend ein Text <p align=justify style="MARGIN-RIGHT: 0px; color: red; background: #000 url("../test.gif")" doch="">Noch mehr text...</p> </p>
Ich möchte nun als Ergebnis:
- background-image: url ( '/test/ha 2132ha/asd_i-mage.jpeg') #000
- background-color: #ff0000
- background: #000 url("../test.gif")Versucht habe ich zum Beispiel folgenden RegEx:
background[-[\w]*]?\s*:[\w\s]+?[(/\w\s'-\."\)#]+
Damit erhalte ich aber leider zu viel, denn im zweiten P-Tag wird das Attribut "doch" ebenfalls mitselektiert. Ich stehe etwas auf dem Schlauch. Hat einer vielleicht eine Idee oder sieht meinen Fehler?
-
Du musst den regulären Ausdruck etwas intelligenter machen, damit er mit Klammern umgehen kann:
\\s*background(\\-[\\w]+)?\\s*:(\\s*[\\w\\#0-9]+\\s*(\\([^\\)]+\\))?)+;?\\s*
Das ist jetzt allerdings für Java, evtl. musst du ihn noch auf JavaScript anpassen. Dein Testfall funktioniert damit zumindest.
EDIT: Ich weiß nicht, inwiefern innerhalb von url(...) z.B. noch weitere Klammern zugelassen sind, das müsste man in dem Fall noch mit abfangen.
-
Danke, das war genau das was ich geucht habe.