No estoy seguro si formulé la pregunta correctamente, así que aquí hay un ejemplo
let string = "Test text ab/c test Test t/est ### Test/ Test t/test Test test" Estoy buscando eliminar / de la única línea que contiene ### para que termine así:
Test text ab/c test Test t/est ### Test Test t/test Test testSupongo que puedo usar
mystring.replace(/\/g, '') Pero, ¿cómo especifico que debe eliminar \ solo en la línea con ###
Puede dividir en líneas nuevas y luego unirlas nuevamente.
let string = `Test text ab/c test Test t/est ### Test/ Test t/test Test test Test// ### test / ` const parts = string.split("\n") .map(s => s.includes("###") ? s.replace(/\//g, '') : s) .join("\n"); console.log(parts);Puedes usar
string.replace(/(?<=###.*)\/|\/(?=.*###)/g, '') La expresión regular (?<=###.*)\/|\/(?=.*###) coincide con un carácter / que está precedido por ### y cualquier cero o más caracteres sin salto de línea, o seguido de cero o más caracteres que no sean de salto de línea y luego ### .
Vea esta demostración de JavaScript:
let string = "Test text ab/c test\nTest t/est\n### /T/e/s/t/\nTest t/test\nTest test" console.log(string.replace(/(?<=###.*)\/|\/(?=.*###)/g, '')) Otra solución: divida la agitación en líneas, luego map la matriz resultante y elimine todos los / caracteres en los elementos que includes la subcadena ### , y luego vuelva a unir la cadena:
let string = "Test text ab/c test\nTest t/est\n### /T/e/s/t/\nTest t/test\nTest test" console.log( string.split("\n").map(line => line.indexOf('###') > -1 ? line.replace(/\//g, '') : line).join("\n") ).replace() el segmento completo y luego devuelve todo menos \/ (el \ tiene el prefijo / para escapar de él.
const str = ` Test text ab/c test Test t/est ### Test/ Test t/test Test test`; const rgx = /(###.+)\//gm; const sub = `$1`; console.log(str.replace(rgx, sub));