DEV Community

Cover image for Removing all vowels with JavaScript
Chris Bongers
Chris Bongers

Posted on • Originally published at daily-dev-tips.com

Removing all vowels with JavaScript

Today we'll look at a nifty solution to remove all vowels in a string using JavaScript.

The idea is that we get a string and have to return the string without the letters aeiou.

JavaScript remove all vowels

Let's dive right into the solution.

const input = 'daily dev tips';

const removeVowels = input.replace(/[aeiou]/gi, '');

console.log(removeVowels);

// 'dly dv tps'
Enter fullscreen mode Exit fullscreen mode

It works!
And yep that's all the code we need, but let's take a closer look at how it works.

The first part is to use the JavaScript replace function to replace a specific match.
The first part is the match, for which we'll use a regular expression. And the second part is the replacement.

We could, say, replace the letter i with an empty string like this.

const removeVowels = input.replace('i', '');

console.log(removeVowels);

// 'daly dev tips'
Enter fullscreen mode Exit fullscreen mode

However, you'll notice it only replaced the first occurrence. And, of course, we can only target one letter at a time.
So this is where our regular expression comes in.

We start the regular expression by wrapping it in the / / backslashes.
Then we open a pattern matcher with the [] brackets. And in between, we specify which letters should be matched.
The last part is to use gi at the end, which stands for global ignore.

  • global meaning to apply it to each occurrence, not just the first one
  • ignore means to perform a case-insensitive search

And that's it. I hope you learned something about removing vowels with JavaScript.

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

Top comments (5)

Collapse
 
jonrandy profile image
Jon Randy ๐ŸŽ–๏ธ • Edited

This will not remove all vowels - accented vowels will remain - for example in the word cafรฉ. To make this fully work, you should remove the accents first:

"cafรฉ"
  .replace(/[aeiou]/gi, '')  // cfรฉ

"cafรฉ"
  .normalize('NFD')
  .replace(/[\u0300-\u036f]/g, '')
  .replace(/[aeiou]/gi, '')  // cf
Enter fullscreen mode Exit fullscreen mode
Collapse
 
calinzbaenen profile image
Calin Baenen

To be fair 'รฅ', 'รค', and 'รถ' *technically* aren't accents. ๐Ÿ™ƒย ย ย ย /j

Collapse
 
dailydevtips1 profile image
Chris Bongers

Ah good point, indeed those are not taking care off in this example :)

Collapse
 
calinzbaenen profile image
Calin Baenen • Edited

What does the "NFD" in .normalize(...) do?
I "know what it does", but when I read it from MDN I don't understand what it means.

Collapse
 
calinzbaenen profile image
Calin Baenen

Don't forget 'ร…', 'ร„', and 'ร–'!