Gibt es eine Möglichkeit ungreedy Matching in JavaScript für reguläre Ausdrücke zu verwenden?
-
21-08-2019 - |
Frage
Ich frage mich, ob es einen Weg gibt ungreedy Matching in JavaScript zu benutzen? Ich versuchte, den U Modifikator, aber es scheint nicht zu funktionieren.
Ich möchte einen kleinen BBCode-Parser in JavaScript schreiben, aber ohne ungreedy Anpassung ist es nicht möglich (zumindest soweit ich es sehen), so etwas zu tun:
'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.*)\[\/b\]/, '<b>$1</b>' );
Aber ein solcher Austausch wäre schön, da es keine Notwendigkeit für HTML Gültigkeit zu überprüfen ist, dann. Unclosed Markups wird einfacher Text bleiben.
Lösung
Sie können ?
nach *
oder +
verwenden, um es ungreedy zu machen, z.B. (.*?)
Andere Tipps
Ich bin spät dran, aber ich werde die Regex sowieso veröffentlichen.
'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow