JavaScript: how to use a regular expression to remove blank lines from a string?
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
I believe this will work
searchText.replace(/(^[ \t]*\n)/gm, "")
This should do the trick i think:
var el = document.getElementsByName("nameOfTextBox")[0];
el.value.replace(/(\r\n|\n|\r)/gm, "");
EDIT: Removes three types of line breaks.
Here's another solution:
string = string.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "")
It appears to handle both blank lines and space-only lines.