176

I want to replace all occurrences of white space characters (space, tab, newline) in JavaScript.
How to do so?

I tried:

str.replace(/ /gi, "X") 
4
  • 1
    regular-expressions.info Commented Jun 28, 2011 at 13:42
  • 1
    What is "X" and why? Commented Mar 19, 2016 at 20:16
  • What about string.replace('',"X"); Commented Jan 30, 2018 at 10:27
  • its just for an example @MuhammadShahzad ;) Commented Apr 27, 2021 at 12:55

10 Answers 10

376

You want \s

Matches a single white space character, including space, tab, form feed, line feed.

Equivalent to

[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] 

in Firefox and [ \f\n\r\t\v] in IE.


str = str.replace(/\s/g, "X"); 
Sign up to request clarification or add additional context in comments.

3 Comments

+1 for remembering to show that the replace function doesn't modify str, so you have to assign it back.
In a function, you can return str.replace, so you don't need to assign in that scope.
Remember for R to use perl = TRUE, like gsub(pattern = "[\\s]+", ..., perl = TRUE)
49

We can also use this if we want to change all multiple joined blank spaces with a single character:

str.replace(/\s+/g,'X'); 

See it in action here: https://regex101.com/r/d9d53G/1

Explanation

/ \s+ / g

  • \s+ matches any whitespace character (equal to [\r\n\t\f\v ])
  • + Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)

  • Global pattern flags
    • g modifier: global. All matches (don't return after first match)

1 Comment

The regex plus (+) is useful for my use case where I'm replacing whitespace type characters with an underscore (_) and if my users fat finger an extra space I really don't want to display an extra _. Thanks for this!
38

\s is a meta character that covers all white space. You don't need to make it case-insensitive — white space doesn't have case.

str.replace(/\s/g, "X") 

Comments

8

Have you tried the \s?

str.replace(/\s/g, "X"); 

Comments

7

If you use

str.replace(/\s/g, ""); 

it replaces all whitespaces. For example:

var str = "hello my world"; str.replace(/\s/g, "") //the result will be "hellomyworld" 

Comments

5

Try this:

str.replace(/\s/g, "X") 

1 Comment

That doesn’t work. \s\n\t matches: any whitespace character, followed by a newline, followed by tab.
3

Not /gi but /g

var fname = "My Family File.jpg" fname = fname.replace(/ /g,"_"); console.log(fname); 

gives

"My_Family_File.jpg" 

Comments

2

You could use the function trim

let str = ' Hello World ';

alert (str.trim());

All the front and back spaces around Hello World would be removed.

1 Comment

This would remove the whitespaces between "hello" and "world". Question says "all" whitespaces
1

Actually it has been worked but

just try this.

take the value /\s/g into a string variable like

String a = /\s/g; str = str.replaceAll(a,"X"); 

1 Comment

where did you get replaceAll from?
0

I've used the "slugify" method from underscore.string and it worked like a charm:

https://github.com/epeli/underscore.string#slugifystring--string

The cool thing is that you can really just import this method, don't need to import the entire library.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.