C'è un modo per utilizzare la corrispondenza ungreedy in JavaScript per le espressioni regolari?

StackOverflow https://stackoverflow.com/questions/364014

Domanda

Mi chiedo se c'è un modo per utilizzare la corrispondenza ungreedy in JavaScript? Ho provato il modificatore U, ma non sembra funzionare.

Voglio scrivere un piccolo parser BBCode in JavaScript, ma senza corrispondenza ungreedy non è possibile (almeno per quanto riguarda come la vedo io) per fare qualcosa di simile:

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.*)\[\/b\]/, '<b>$1</b>' );

Ma tale sostituzione sarebbe bello in quanto non v'è alcuna necessità di controllare la validità HTML allora. ricarichi non chiusi rimarranno di testo semplice.

È stato utile?

Soluzione

È possibile utilizzare ? dopo * o + per renderlo ungreedy, per esempio (.*?)

Altri suggerimenti

Sono in ritardo, ma vi posterò la regex comunque.

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top