2010-08-23 6 views
0

Essaie de remplacer les caractères non alphanumériques par un trait d'union. Je ne vois pas pourquoi ça ne devrait pas fonctionner. Il renvoie la chaîne d'origine inchangée.L'expression régulière ne fonctionne pas

item.mimetype = "image/png"; 

var mimetype = item.mimetype.toLowerCase().replace("/[^a-z0-9]/g",'-'); 
+0

Bon, je vois que dans javascript une expression régulière a sa propre syntaxe. Soigné. – Keyo

+0

Cela dépend de l'autre langage de programmation que vous utilisez pour écrire des programmes. Perl et Ruby utilisent aussi la syntaxe '/ a /'. – kiamlaluno

Répondre

6

Supprimez les guillemets autour de l'expression régulière.

Comme écrit Javascript est à la recherche de la chaîne "/[^a-z0-9]/g"

// This works 
"image/png".toLowerCase().replace(/[^a-z0-9]/g,'-'); 

// And if writing unquoted regular expressions makes you feel icky: 
"image/png".toLowerCase().replace(new RegExp("[^a-z0-9]", "g"), '-'); 

// And if I might do a full rewrite: 
"image/png".toLowerCase().replace(/\W/g, '-'); 

Plus here

4

Vous avez mis une chaîne au lieu d'une regex. Pour ce faire:

.replace(/[^a-z0-9]/g,'-');