Remove Multiple New Lines with JavaScript

By  on  

I'm blessed in that lots of people want to guest post on this blog.  It's really flattering and I love seeing writers get a bunch of attention after writing.  My task is converting the blog post, in whatever format it's provided in (HTML, Markdown, PDF, Google Doc, etc.), to HTML for my blog, which can sometimes get messy.  I employ a host of regular expressions to fix these formatting issues.  And the number one problem?  Loads of extra new lines (\n).

The Regular Expression

The regular expression is actually quite simple:

content.replace(/[\r\n]+/g, '\n'); // Just one new line

content.replace(/[\r\n]+/g, '\n\n'); // "document" formatting, more elegant

With the dozens of extra lines gone it's much easier to work with the content!

Recent Features

Incredible Demos

  • By
    Flexbox Equal Height Columns

    Flexbox was supposed to be the pot of gold at the long, long rainbow of insufficient CSS layout techniques.  And the only disappointment I've experienced with flexbox is that browser vendors took so long to implement it.  I can't also claim to have pushed flexbox's limits, but...

  • By
    JavaScript Battery API

    Mozilla Aurora 11 was recently released with a bevy of new features. One of those great new features is their initial implementation of the Battery Status API. This simple API provides you information about the battery's current charge level, its...

Discussion

  1. Adam van den Hoven

    David,

    I’m more inclined to use something like:

    content.replace(/[\r\n]\s*/g, '\n'); // Just one new line
    content.replace(/[\r\n]\s*/g, '\n\n'); // "document" formatting, more elegant
    

    Only there always seems to be some extra whitespace between those newlines. If you don’t want to loose the tabs on the next line then this works just as well

    content.replace(/[\r\n]\s*[\r\n]/g, '\n'); // Just one new line
    content.replace(/[\r\n]\s*[\r\n]/g, '\n\n'); // "document" formatting, more elegant
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!