Estoy practicando expresiones regulares. Pensé en crear expresiones regulares que convierten *
en , al igual que con Markdown:
el = el.replace(/\*\b/g, '') el = el.replace(/\b\*|(\.|\,|\?|\!|\*|---|\.\.\.\s)\*/g, '$1')
Esto funciona en la mayoría de los casos. Sin embargo, las cosas se complican si aplicas esa expresión regular a esto:
Chicken teriy*ai*ki, r*ai*men noodles, spaghetti a la moneg*ai*sque.
Produce esto:
Chicken teriyaiki, raimen noodles, spaghetti a la monegaisque. And wait for me, often falling asleep.
Cómo modificar esta expresión regular para que produzca algo como esto:
Chicken teriyaiki, raimen noodles, spaghetti a la monegaisque. And wait for me, often falling asleep.
Puede fusionar las dos twigs en su segunda expresión regular, ya que ambas terminan con un patrón \*
, como (\b|\.|,|\?|!|\*|---|\.{3}\s)\*
(incluso puede combinar las alternativas \.|,|\?|!|\*
single char en [.,?!*]
), y luego usar
var s = "Chicken teriy*ai*ki, r*ai*men noodles, spaghetti a la moneg*ai*sque."; console.log( s.replace(/\*\b([^]*?)(\b|[.,?!*]|---|\.{3}\s)\*/g, '$1$2') )
Esto debería funcionar, envolverá los caracteres entre * signos en tags em, NOTA: esto se aplica globalmente en la cadena proporcionada.
const str = "something that has words surrounded with * signs" str.replace(/\*(\w+)\*/g, "$1")
Use regex \*([\w ^?.]*?)\*
Reemplazar con $1<\em>
el = el.replace(/\*([\w ^?.]*?)\*/g, '$1<\em>')
Regex