Ich versuche, ungültiges CSS wie folgt zu transformieren:
{color:red}
und mach es wie folgt gültig:
.missing_selector{color:red}
Beispiel CSS:
%Vor%Mein aktueller regulärer Ausdruck:
/([^a-z0-9\)\];\-_]*\{)/i
Live-Test:
Sie müssen das verwenden:
%Vor%Ersetzen durch:
%Vor% Die (?<=\A|\})
stellt sicher, dass es nur etwas gibt (außer whitespace), bevor% code_% der Anfang der Zeichenfolge oder ein schließendes {
ist. (Danke an Casimir et Hippolyte um auf das Problem dort hinzuweisen.)
Dies
%Vor%macht nicht, was Sie denken.
}
startet eine Erfassungsgruppe (
benötigt ein anderes Zeichen als [^a-z0-9\)\];\-_]
, a-z
, 0-9
, )
, ]
, ;
oder -
.
_
Null oder mehrmals *
benötigt \{
{
beendet die Erfassungsgruppe Aber es hat kein )
, also ist es nicht an den Anfang einer Zeile gebunden, noch prüft es, was vor dem ^
steht (was nur der Anfang der Zeichenkette, Leerzeichen oder a sein sollte) %Code%). Als Ergebnis wird es überall dort übereinstimmen, wo Sie eine Reihe von Leerzeichen oder andere nicht-alphanumerische Zeichen haben (ausgenommen {
) in Ihrem Beispiel-CSS:
Sehen Sie sich diese regex101-Demo an, um eine ausführlichere Erklärung zu erhalten, und das Beispiel entspricht .