Tengo una cadena, como hello _there_. Me gustaría reemplazar los dos guiones bajos con <div> y </div> respectivamente, usando JavaScript . El resultado (por lo tanto) se vería como hello <div>there</div>. La cadena puede contener múltiples pares de guiones bajos.

Lo que estoy buscando es una forma de o ejecutar una función en cada partido, como lo hace Ruby:

"hello _there_".gsub(/_.*?_/) { |m| "<div>" + m[1..-2] + "</div>" }

O podrá hacer referencia a un grupo coincidente, de nuevo de la forma en que se puede hacer en ruby:

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")

¿Alguna idea o sugerencia?

250
Sinan Taifour 5 ago. 2009 a las 21:48

3 respuestas

La mejor respuesta
"hello _there_".replace(/_(.*?)_/, function(a, b){
    return '<div>' + b + '</div>';
})

Oh, o también podrías:

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")
369
Rand Random 24 nov. 2017 a las 07:21

Para la cadena de reemplazo y el patrón de reemplazo según lo especificado por $. aquí un currículum:

enter image description here

Enlace al documento: aquí

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")



Nota:

Si desea tener un $ en la cadena de reemplazo, use $$. Igual que con el sistema de fragmentos de código vs.

4
Mohamed Allal 2 feb. 2019 a las 13:05

Puede usar replace en lugar de gsub.

"hello _there_".replace(/_(.*?)_/g, "<div>\$1</div>")
33
Eifion 5 ago. 2009 a las 17:52