2012-06-12 12 views
10

Estoy tratando de construir un formateador de texto que agregará etiquetas p y br al texto basado en saltos de línea. Actualmente tengo esto:Javascript replace match group

s.replace(/\n\n/g, "\n</p><p>\n"); 

Que funciona maravillosamente para crear finales de párrafo y comienzos. Sin embargo, tratar de encontrar instancias
no funciona tan bien. El intento de hacer un reemplazo grupo similar que no está funcionando, ya que ignora el paréntesis y reemplaza todo el partido de expresiones regulares:

s.replace(/\w(\n)\w/g, "<br />\n"); 

he intentado quitar la opción g (siendo reemplazado toda partido, pero sólo en el primer partido) Hay otra manera de hacer esto?

Gracias!

Respuesta

18

Puede capturar las partes que no desea reemplazar e incluirlos en la cadena de reemplazo con $ seguido por el número del grupo:

s.replace(/(\w)\n(\w)/g, "$1<br />\n$2"); 

See this section en la documentación MDN para más información en referirse a partes de la cadena de entrada en su cadena de reemplazo.

+1

excelente, funciona perfecto y tiene sentido! – Asherlc

2

Atrapa a los personajes que rodean también:

s.replace(/(\w)(\n\w)/g, "$1<br />$2");