Andreas Dölling: RegExp Problem

Beitrag lesen

Hallo,

ich kann jetzt nicht beurteilen, wie sinnvoll Dein Ansatz ist und ob Du die Möglichkeit hast, auf FONT-Elemente zu verzichten.
Daher beschränke ich mich mal auf Deine konkrete Frage.
Ändere den regulären Ausdruck so ab:
/<SPAN (?:style="color:\s*(#[0-9a-z]{6});)?(?:font-size:\s*([0-9]*)px;)?(?:font-family:\s*([a-z]*);)?">/gi

In Deinem Beispiel-String wurde nämlich mit Deinem regulären Ausdruck nur der erste SPAN erwischt. Auf den zweiten SPAN-Tag paßte Dein Ausdruck nicht, da er das Vorhandensein der Attribute color, font-size und font-family zwingend voraussetzte.
Um dies zu verhindern, müssen diese Teilausdrücke mit '?' auf  optional gesetzt werden: z.B. (style="color:\s*(#[0-9a-z]{6});)?
Damit diese zusätzliche Klammer nun nicht als Teilergebnis gemacht wird, fügst Du das '?:' hinzu: (?:style="color:\s*(#[0-9a-z]{6});)?

Ach so, das '\s*' sorgt dafür, daß Du auch SPAN-Tags findest, bei denen zwischen dem Namen der CSS-Eigenschaft und dem Wert keines oder mehrere Leerzeichen stehen.

Ciao,
Andreas

--
"Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)