2008-12-12 9 views
14

¿Me pregunto si hay una forma de usar coincidencias no segmentadas en JavaScript? Probé el modificador U, pero parece que no funciona.¿Hay alguna manera de usar coincidencias sin sangría en JavaScript para expresiones regulares?

Quiero escribir un pequeño analizador de BBCode en JavaScript, pero sin ungreedy juego 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 El reemplazo sería bueno ya que no hay necesidad de verificar la validez de HTML. Las marcas no cerradas serán texto simple.

Respuesta

23

Puede usar ? después de * o + para hacerlo no codicioso, p. Ej. (.*?)

+0

Increíble, pero simplemente funciona! Gracias. en otros entornos, se puede usar la bandera/u (no ligada). Pero para los métodos javascript no está disponible (a excepción de los métodos nodejs, creo) – cepix

2

Llego tarde, pero publicaré la expresión regular de todos modos.

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

Siempre encuentro http://regexpal.com/ útil cuando estoy trabajando con expresiones regulares. – some

Cuestiones relacionadas