web-dev-qa-db-fra.com

Regex supprime tous les caractères spéciaux sauf les nombres?

Je voudrais supprimer tous les caractères spéciaux (à l'exception des nombres) d'une chaîne. J'ai pu aller jusqu'ici

var name = name.replace(/[^a-zA-Z ]/, "");

mais il semble que cela supprime le premier nombre et laisse tous les autres. 

Par exemple:

name = "collection1234"; //=> collection234

ou 

name = "1234567"; //=> 234567
17
EHerman

Utilisez le drapeau global:

var name = name.replace(/[^a-zA-Z ]/g, "");
                                    ^

Si vous ne souhaitez pas supprimer de nombres, ajoutez-les à la classe:

var name = name.replace(/[^a-zA-Z0-9 ]/g, "");
35
Jerry

Pour supprimer les caractères spéciaux, essayez

var name = name.replace(/[!@#$%^&*]/g, "");
14
T-Dor

Si cela ne vous dérange pas d'inclure le trait de soulignement comme caractère autorisé, vous pouvez simplement essayer

result = subject.replace(/\W+/g, "");

Si le trait de soulignement doit également être exclu, alors

result = subject.replace(/[^A-Z0-9]+/ig, "");

(Notez l'indicateur insensible à la casse)

5
Ron Rosenfeld

Cela devrait fonctionner aussi bien

text = 'la voiture? était grand et * rouge!

newtext = re.sub ('[^ a-z0-9]', '', texte)

print (newtext)

la voiture était grosse et rouge

0
David Miller