Hola,
tengo este codigo:
var room = 'room2'; var exitroom = 'room1,room2,room3'; exitroom = exitroom.replace(/,${room},/,''); console.log(exitroom);puedes probarlo aquí: https://jsfiddle.net/uq9w0Ls4/
mi salida esperada es simplemente room1,room3 sacando room2 pero dado que puede cambiar su posición dentro de la cadena, quiero apuntar a , sin importar si viene antes o después de la cadena, pero no puedo entender la lógica de expresiones regulares aquí. Sé que podría hacer simplemente:
var room = 'room2'; var exitroom = 'room1,room2,room3'; exitroom = exitroom.replace(room+',','').replace(','+room,''); console.log(exitroom);que funciona, pero creo que regex sería un enfoque más directo.
Gracias.
Primero, al escribir .replace(/,${room},/,'') no está utilizando la variable room.
Para usar una variable en una expresión regular, debe llamar a new RegExp()
En segundo lugar, si desea una expresión regular que coincida cuando la coma está antes o después de la palabra, puede usar un grupo () con un Or | operador.
por lo que debería verse así:
var reg = new RegExp(`(?:${room},|,${room})`, "g"); exitroom.replace(reg,''); El ?: al comienzo del grupo, es solo que debería ser un grupo que no captura, debería funcionar bien también sin él