Tengo expresiones regulares que probé en regex101 , sin embargo, cuando uso lo mismo en nodejs, no reemplaza las líneas nuevas. La expresión regular es /([ ]*\n)+/gm . Se supone que reemplaza varias líneas nuevas con una sola línea nueva. El código es el siguiente. Este código es parte de mi extensión vscode. ¿Alguien puede decirme qué estoy haciendo mal?
function format(str) { const regex = /([ ]*\n)+/gm; const subst = `\n`; const result = str.replace(regex, subst); return result; } function format(str) { const regex = /([ ]*\n)+/gm; const subst = `\n`; const result = str.replace(regex, subst); return result; } console.log(format(`abc d s s`));Lo más probable es que ese problema esté relacionado con los finales de línea CRLF.
Puedes usar
str.replace(/(?:\s*\n)+/g, '\n') Tenga en cuenta que no necesita m bandera aquí.
Vea la demostración de JavaScript:
const str = "abc\r\n \r\nd\r\n\r\ns\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\ns"; console.log(str.replace(/(?:\s*\n)+/g, '\n')); const str2 = "abc\n \nd\n\ns\n\n\r\n\r\n\n \n\r\n \n\ns"; console.log(str2.replace(/(?:\s*\n)+/g, '\n'));