JavaScript: how to use a regular expression to remove blank lines from a string?

blank-line, javascript, regex

Solution

Your pattern seems alright, you just need to include the multiline modifier `m`, so that `^` and `$` match line beginnings and endings as well:

/^\s*\n/gm

Without the `m`, the anchors only match string-beginnings and endings.

Note that you miss out on UNIX-style line endings (only `\r`). This would help in that case:

/^\s*[\r\n]/gm

Also note that (in both cases) you don't need to match the optional `\r` in front of the `\n` explicitly, because that is taken care of by `\s*`.

As Dex pointed out in a comment, this will fail to clear the last line if it consists only of spaces (and there is no newline after it). A way to fix that would be to make the actual newline optional but include an end-of-line anchor before it. In this case you do have to match the line ending properly though:

/^\s*$(?:\r\n?|\n)/gm

Problem

I need to use JavaScript to remove blank lines in a HTML text box. The blank lines can be at anywhere in the `textarea` element. A blank line can be just a return or white spaces plus return. I am expecting a regular expression solution to this. Here are some I tried, but they are not working and cannot figure out why: ``` /^\s*\r?\n/g /^\s*\r?\n$/g ``` Edit 1 It appears that the solution (I modified it a little) suggested by aaronman and m.buettner works: ``` string.replace(/^\s*\n/gm, "") ``` Can someone tell why my first regular expression is not working? Edit 2 After reading all useful answers, I came up with this: ``` /^[\s\t]*(\r\n|\n|\r)/gm ``` Is this going to be one that cover all situations? Edit 3 This is the most concise one covering all spaces (white spaces, tabs) and platforms (Linux, Windows, Mac). ``` /^\s*[\r\n]/gm ``` Many thanks to m.buettner!

Original source