Regexp pour une chaîne de contenir seulement des lettres , des nombres et de l'espace en Java

Exigence: Chaîne doit contenir que des lettres , des nombres et de l'espace.
J'ai passer un propre nom à une autre API.

Mise En Œuvre: Java

Je suis venu avec cette pour mon exigence

public static String getCleanFilename(String filename) { 
si (nom de fichier == null) { 
return null; 
} 
de retour nom de fichier.replaceAll("[^A-Za-z0-9 ]",""); 
} 

Cela fonctionne bien pour quelques-uns de mes cas de test , mais vous voulez savoir ai-je raté une des conditions aux limites, ou une meilleure façon (de la performance) pour le faire.

Si vous êtes à la valider un nom de fichier, vous ne devriez pas être modifier.
Alors, que feriez vous souhaitez utiliser pour "____".
Ce sera presque certainement pisse les utilisateurs. Simplement détecter le négatif et de laisser l'utilisateur de savoir ce qu'ils peuvent et ne peuvent pas entrer.
Exigence est , j'ai passer un propre nom à l'autre de l'API. (si la modification est requise)
peut-être l'utilisation de la non-parole motif \W il contient un trait de soulignement. voir ici download.oracle.com/javase/1.4.2/docs/api/java/util/regex/...

OriginalL'auteur sat | 2011-02-14