2008-12-12 2 views
14

Ich frage mich, ob es eine Möglichkeit gibt, ungerechtfertigte Übereinstimmung in JavaScript zu verwenden? Ich habe den U-Modifier ausprobiert, aber es scheint nicht zu funktionieren.Gibt es eine Möglichkeit, ungerechtfertigte Übereinstimmung in JavaScript für reguläre Ausdrücke zu verwenden?

Ich möchte eine kleine BBCode-Parser in JavaScript schreiben, aber ohne ungreedy es passend ist 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 eine solche Ersatz wäre nett, da dann nicht auf HTML-Gültigkeit geprüft werden muss. Nicht geschlossene Markups bleiben einfacher Text.

Antwort

23

Sie können ? nach * oder + verwenden, um es ungreedy zu machen, z.B. (.*?)

+0

Unglaublich, aber es funktioniert einfach! Vielen Dank. In anderen Umgebungen kann die Flagge/u (ungreedy) verwendet werden. Aber für Javascript-Methoden ist nicht verfügbar (mit Ausnahme von Nodejs Methoden, denke ich) – cepix

2

Ich bin spät, aber ich werde die Regex trotzdem post.

'[b]one[/b] two [b]three[/b]'.replace(/\[b\](.+?)\[\/b\]/g, '<b>$1</b>'); 
+0

Ich finde immer http://regexpal.com/ hilfreich, wenn ich mit Regexps arbeite. – some

Verwandte Themen