La tarea en sí se ve así: Dada la cadena 'ave a#b a2b a$b a4b a5b ab acb'. Escribe una expresión regular que encuentre cadenas del siguiente tipo: las letras 'a' y 'b' están en los bordes, y no hay ni una letra ni un número entre ellas.
Es muy difícil para mí darle sentido. Pero pude escribir algo como:
'ave a#b a2b a$b a4b a5b ab acb'.replace(/a\Wb/g, "") ,
pero funciona reemplazando solo los valores que necesito generar y dejando 'ave a2b a4b a5b acb' , pero solo necesito eliminar todo excepto 'a#ba$b a-b' . ¿Me puede ayudar con eso?
Puede hacer coincidir todas las apariciones del patrón \ba[^\sa-zA-Z0-9]b\b que coincida con a no precedido por cualquier palabra char, luego cualquier char que no sea espacio en blanco, letras y dígitos, y luego a b no seguido de una palabra char, y luego únase a la salida con un espacio:
console.log( 'ave a#b a2b a$b a4b a5b ab acb'.match(/\ba[^\sa-zA-Z0-9]b\b/g).join(" ") )Vea la demostración de expresiones regulares .
Nota: si las coincidencias esperadas ocurren entre espacios en blanco o al principio/final de la cadena, es posible que deba reemplazar los límites de las palabras con los límites de los espacios en blanco, /(?<!\S)a[^\sa-zA-Z0-9]b(?!\S)/g .