Remove all special characters with RegExp

I would like a RegExp that will remove all special characters from a string. I am trying something like this but it doesn’t work in IE7, though it works in Firefox.

var specialChars = "[email protected]#$^&%*()+=-[]/{}|:<>?,.";

for (var i = 0; i < specialChars.length; i++) {
  stringToReplace = stringToReplace.replace(new RegExp("\" + specialChars[i], "gi"), "");
}

A detailed description of the RegExp would be helpful as well.

Answer

var desired = stringToReplace.replace(/[^ws]/gi, '')

As was mentioned in the comments it’s easier to do this as a whitelist – replace the characters which aren’t in your safelist.

The caret (^) character is the negation of the set [...], gi say global and case-insensitive (the latter is a bit redundant but I wanted to mention it) and the safelist in this example is digits, word characters, underscores (w) and whitespace (s).