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...)