'regex remove line breaks between double quotes without affecting other line break (eager match)
I have a map
(key, value pairs) and few of these values have line breaks within them (inside double quotes) which is causing issues in CSS.
How can I remove these link breaks (the ones inside double quotes only) using regex find and replace (suitable in JavaScript).
Input:
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",
Expected output:
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",
I have tried many regexes but they are either removing line breaks in last two lines too, or don't do anything at all.
Solution 1:[1]
I found the answer. Adding it so that newbies get benefited.
The following regex select the line breaks only inside the double quotes or single quotes without affecting other lines
Find: [^"'],\n
Replace: ,
Javascript code for doing the same
.replace(/[^"'],\n/gm,",");
The flags "gm" above is optional. Use it if your strings span across multiple lines and there are multiple occurences for the given pattern which needs to be replaced.
Note: This answer is useful for my usecase. If anyone faces slightly different problem I can help with a regex with their usecase.
Solution 2:[2]
Use
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, '')))
I.e. remove carriage return and line feed characters between quotes only.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Jagan Pandurangan |
Solution 2 | Ryszard Czech |