Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
608 views
in Technique[技术] by (71.8m points)

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

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*
?
/g   

/^s*
?
$/g

Edit 1

It appears that the solution (I modified it a little) suggested by aaronman and m.buettner works:

string.replace(/^s*
/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]*(
|
|
)/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*[
]/gm

Many thanks to m.buettner!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

/^s*
/gm

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

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

/^s*[
]/gm

Also note that (in both cases) you don't need to match the optional in front of the 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*$(?:
?|
)/gm

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...