Ok guys, I'm having a hard time with regex..
Here's what I need... get a text file, remove all blank lines and white spaces in the beginning and end of these lines, the blank lines to be removed also include a possible empty line at the end of the file (a \\n in the end of the whole text)
So my script was:
quotes.replace(/^\s*[\r\n]/gm, "");
This replaces fairly well, but leaves one white space at the end of each line and doesn't remove the final line break.
So I thought using something like this:
quotes.replace(/^\s*[\r\n]/gm, "").replace(/^\n$/, "");
The second "replace" would remove a final \\n from the whole string if present.. but it doesn't work..
So I tried this:
quotes.replace(/^\s*|\s*$|\n\n+/gm, "")
Which removes line breaks but joins some lines when there is a line break in the middle:
so that
1
2
3
4
Would return the following lines:
["1", "2", "34"]
Can you guys help me out?
Since it sounds like you have to do this all in a single regex, try this:
quotes.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm,"")
What we are doing is creating a group that captures nothing, but prevents a newline by itself from getting consumed.
Split, replace, filter:
quotes.split('\n')
.map(function(s) { return s.replace(/^\s*|\s*$/g, ""); })
.filter(function(x) { return x; });
With input value " hello \\n\\nfoo \\n bar\\nworld \\n"
, the output is ["hello", "foo", "bar", "world"]
.
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.