¿Cómo arreglar esta expresión regular para que reemplace * correctamente (entre palabras)?

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