¿Hay una manera de utilizar la concordancia ungreedy en JavaScript para expresiones regulares?

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

Pregunta

Me pregunto si hay una manera de utilizar la concordancia ungreedy en JavaScript? Probé el modificador T, pero no parece funcionar.

Quiero escribir un pequeño analizador de BBCode en JavaScript, pero sin juego ungreedy no es posible (al menos por lo que yo veo) a hacer algo como esto:

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

Pero tal sustitución sería bueno ya que no hay necesidad de comprobar la validez de HTML a continuación. marcas no cerradas permanecerán texto simple.

¿Fue útil?

Solución

Puede utilizar ? después * o + para que sea ungreedy, por ejemplo, (.*?)

Otros consejos

Se me hace tarde, pero voy a publicar la expresión regular de todos modos.

'[b]one[/b] two [b]three[/b]'.replace( /\[b\](.+?)\[\/b\]/g, '<b>$1</b>' );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top