(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. 🙂


Anmelden zum Antworten