Tengo el siguiente objeto:

{
    "_id": "59f6f931d20f73000410bbd8",
    "title": "Test",
    "salary": "1337",
    "maxSalary": "4000",
    "minSalary": "1500",
    "introText": "Lorem __Ipsum__ Sit Dolor Amet",
    "expectText": "Lorem Ipsum Sit _Dolor__ Amet Est __Circa__."
}

En mi aplicación Vue.js, implementé vue-markdown para representar el descuento para mostrar palabras en negrita y cursiva.

Lo que ahora tengo que implementar es analizar el objeto para cada __word __ y reemplazarlo con regex a word.

Lo que llegué hasta ahora:

let objJson = JSON.stringify(obj);
objJson = objJson.replace(/\_/g, '');
let jobXML = JSON.parse(objJson);
res.send(jobXML);

Así que esta es mi solución para eliminar los caracteres "__", pero no encontré ningún otro recurso que explique cómo reemplazarlo con mi entidad HTML.

Mi solución es necesaria porque uso /jobs para mostrar todos los trabajos en mi aplicación vue (que puede usar Markdown), pero también tengo otra ruta rápida que no puede usar "__" pero necesita las entidades HTMl.

1
mrks 30 oct. 2017 a las 16:42

3 respuestas

La mejor respuesta

Creo que obtuve una solución de trabajo por mi cuenta:

let objJson = JSON.stringify(obj);
let regexBold = /\_\_(\S(.*?\S)?)\_\_/gm;
let regexItalic = /\_(\S(.*?\S)?)\_/gm;
objJson = objJson.replace(regexBold, '<strong>$1</strong>');
objJson = objJson.replace(regexItalic, '<i>$1</i>');
let jobXML = JSON.parse(objJson);
res.send(jobXML);

¡Sería bueno ver otros / mejores enfoques para ese problema!

0
mrks 30 oct. 2017 a las 13:51

Probablemente puedas probar este:

str.replace(/__(.*?)__((_+|\W+|$))/g, '<strong>$1</strong>$2')
1
Cheng 30 ago. 2018 a las 09:40

Este es el regex que debe usar en su llamada de reemplazo:

str.replace(/_{1,}([ a-z0-9]+)_{1,}/img, "<strong>$1</strong>")

Demostración:

var str = "Lorem Ipsum Sit _Dolor__ Amet Est __Circa__.";

console.log(str.replace(/_{1,}([ a-z0-9]+)_{1,}/img, "<strong>$1</strong>"));
1
cнŝdk 30 oct. 2017 a las 14:04