Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie kann man Regex-Instanzen außerhalb von in Anführungszeichen gesetzten Zeichenfolgen zuordnen, auch mit maskierten Anführungszeichen?

DDD
Freigeben: 2024-10-28 00:02:01
Original
880 Leute haben es durchsucht

How to Match Regex Instances Outside of Quoted Strings, Even with Escaped Quotes?

Übereinstimmende Instanzen außerhalb von Anführungszeichen

Im Gegensatz zu früheren Annahmen ist es möglich, alle Instanzen einer bestimmten Regex abzugleichen, die nicht in Anführungszeichen stehen Teile einer Zeichenfolge mithilfe regulärer Ausdrücke, wobei sogar maskierte Anführungszeichen berücksichtigt werden.

Regex-Lösung

Um dies zu erreichen, verwenden Sie eine Look-Ahead-Behauptung, die prüft, ob jedes Wort vorhanden ist außerhalb von Anführungszeichen, was auftritt, wenn eine gerade Anzahl von Anführungszeichen folgt. Der folgende reguläre Ausdruck erfasst dieses Muster:

\+(?=([^"]*"[^"]*")*[^"]*$)
Nach dem Login kopieren

Umgang mit maskierten Anführungszeichen

Um mit maskierten Anführungszeichen umzugehen, ändern Sie den Ausdruck so, dass Backslashes ignoriert werden und fahren Sie mit dem nächsten nicht maskierten Anführungszeichen fort :

\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)
Nach dem Login kopieren

Dadurch wird sichergestellt, dass maskierte Anführungszeichen nicht als öffnende Anführungszeichen gezählt werden.

JavaScript-Verwendung mit .split() und .replace()

Zur Verwendung mit den JavaScript-Methoden .split() und .replace() kann der folgende Code verwendet werden:

const input = '+bar+baz"not+or\"+or+\"this+\"foo+bar+';
const replaced = input.replace(/\+(?=([^"\]*(\.|"([^"\]*\.)*[^"\]*"))*[^"]*$)/g, '#');
console.log(replaced); // "#bar#baz\"not+or\"+or+\"this+\"foo#bar#"
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man Regex-Instanzen außerhalb von in Anführungszeichen gesetzten Zeichenfolgen zuordnen, auch mit maskierten Anführungszeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage