¿Hay una manera de utilizar la concordancia ungreedy en JavaScript para expresiones regulares?
-
21-08-2019 - |
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.
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