简体   繁体   中英

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.

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.

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, '')))

Ie remove carriage return and line feed characters between quotes only.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM