2010-06-09 3 views
1

Pourquoi cela n'attribue-t-il pas prepClass à la chaîne selectorClass avec des underscores au lieu de caractères non alpha? De quoi ai-je besoin pour le changer?Easy Javascript Regex Question

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

Répondre

4

Quelques choses:

  • Si vous utilisez le constructeur RegExp, vous ne avez pas besoin des barres obliques, vous confondant peut-être avec la syntaxe de RegExp littéraux.
  • Vous souhaitez faire correspondre la classe de caractères \W.

Ce qui suit fonctionnera:

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

Le constructeur RegExp accepte une chaîne contenant le motif, notez que vous devriez à double évasion la barre oblique, afin d'obtenir une seule barre oblique et un W ("\W") dans la chaîne.

Ou vous pouvez simplement utiliser la notation littérale:

var regex = /\W/g; 

Recommandé lire:

+0

Correctamundo. Merci. Je vais accepter dès que la limite de temps est écoulée – Matrym

+0

Question subsidiaire - puis-je simplement utiliser/\ W/g à l'intérieur remplacer plutôt que de définir une variable regex? – Matrym

+0

@Matrym: Oui, vous pouvez utiliser soit directement dans le remplacement: '.replace (new RegExp (" \\ W "," g ")," _ ")' ou '.replace (/ \ W/g," _ ")'. – Guffa