Hallo Linuchs,
das sollte eine relativ einfach Regex sein:
\+\+(.*?)(?:\/(.*?))?\+(.+?)\+\+
oder, wenn Du die capturing-Gruppen benennen willst:
\+\+(?<fg>.*?)(?:\/(?<bg>.*?))?\+(?<text>.+?)\+\+
Die non-greedy Fragezeichen hinter .* und .+ kannst Du in PHP durch das Rexexp-Flag U ersetzen, in JacaScript scheint das nicht zu gehen. Wenn Du alle Vorkommen in einem Rutsch ersetzen willst, sollte auch noch das g-Flag dazu (global). Und wenn ein Zeilenumbruch in einer Farbgruppe erlaubt sein soll, auch noch das s Flag.
Getestet mit PHP und JavaScript Regex auf dieser Regex101 Testseite
Eine stumpfsinnige Ersetzung würde mit diesem Replacement-Ausdruck gehen:
<span style="color:$1;background-color:$2">$3</span>
aber dann gibt's keine Plausi und keine Bequemlichkeit bei Farbnamen 😉
Rolf
sumpsi - posui - clusi