views:

50

answers:

1

Why doesn't this assign prepClass to the string selectorClass with underscores instead of non alpha chars? What do I need to change it to?

var regex = new RegExp("/W/", "g");
var prepClass = selectorClass.replace(regex, "_");
+4  A: 

A couple of things:

  • If you use the RegExp constructor, you don't need the slashes, you are maybe confusing it with the syntax of RegExp literals.
  • You want match the \W character class.

The following will work:

var regex = new RegExp("\\W", "g");

The RegExp constructor accepts a string containing the pattern, note that you should double escape the slash, in order to get a single slash and a W ("\W") in the string.

Or you could simply use the literal notation:

var regex = /\W/g;

Recommended read:

CMS
Correctamundo. Thanks. I'll accept as soon as the time limit is up
Matrym
Side question - can I just use /\W/g inside replace rather than defining a variable regex?
Matrym
@Matrym: Yes, you can use either directly in the replace: `.replace(new RegExp("\\W", "g"), "_")` or `.replace(/\W/g, "_")`.
Guffa