Tengo un map (clave, pares de valores) y algunos de estos valores tienen saltos de línea dentro de ellos (dentro de comillas dobles), lo que está causando problemas en CSS.
¿Cómo puedo eliminar estos enlaces rotos (solo los que están entre comillas dobles) usando regex buscar y reemplazar (adecuado en JavaScript)?
Aporte:
actionIconTransition: " background-color 0.2s, color 0.2s, box-shadow 0.2s", listItemTransition: " background-color 0.2s, border-color 0.2s, box-shadow 0.2s", primeIconFontSize: " 1rem", divider: " 1px solid #dee2e6",Rendimiento esperado:
actionIconTransition: " background-color 0.2s,color 0.2s, box-shadow 0.2s", listItemTransition: " background-color 0.2s,border-color 0.2s, box-shadow 0.2s", primeIconFontSize: " 1rem", divider: " 1px solid #dee2e6",He probado muchas expresiones regulares, pero también eliminan los saltos de línea en las últimas dos líneas o no hacen nada en absoluto.
Encontré la respuesta. Agregándolo para que los novatos se beneficien.
La siguiente expresión regular selecciona los saltos de línea solo dentro de las comillas dobles o comillas simples sin afectar otras líneas
Buscar: [^"'],\n
Reemplazar: ,
Código Javascript para hacer lo mismo
.replace(/[^"'],\n/gm,",");Las banderas "gm" arriba son opcionales. Úselo si sus cadenas abarcan varias líneas y hay múltiples ocurrencias para el patrón dado que debe reemplazarse.
Nota: Esta respuesta es útil para mi caso de uso. Si alguien enfrenta un problema ligeramente diferente, puedo ayudar con una expresión regular con su caso de uso.
Usar
let test_str = `actionIconTransition: " background-color 0.2s, color 0.2s, box-shadow 0.2s", listItemTransition: " background-color 0.2s, border-color 0.2s, box-shadow 0.2s", primeIconFontSize: " 1rem", divider: " 1px solid #dee2e6",` console.log(test_str.replace(/"[^"]*"|'[^']*'/g, (z) => z.replace(/[\r\n]+/g, '')))Es decir, elimine los caracteres de retorno de carro y avance de línea entre comillas únicamente.