Nom fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 332 fois - Téléchargée 17 fois

Contenu du snippet

Validation du nom d'un fichier.

- Accepte : File.txt | C:\Data\..\.\CodeSSourceS.Regex\MonFichier.txt | \\ordinateur\partage\MonFichier.txt

- N'accepte pas : C:\.MonFichier.txt | C:\.\.CodeSSourceS\MonFichier.txt

Source / Exemple :


^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$

A voir également

Ajouter un commentaire Commentaires
Messages postés
4
Date d'inscription
mardi 4 janvier 2005
Statut
Membre
Dernière intervention
12 novembre 2008

Pas mal, mais il y a un peu trop de captures (inutiles) et d'échappements (la plupart inutiles dans une classe de caractères : [^\\/:*?"|<>. ] est correct), compliquant inutilement l'expression.
De plus, je ne comprends pas la restriction contre le point en début de nom de fichier ou de répertoire, assez courant dans le monde Unix (fichiers cachés) et fort utilisé par les utilitaires venant de ce monde (Gimp, Scribus, Eclipse...).
Quelques bonnes astuces, en tout cas.

Autre cas non couvert : \a\b.c est valide. Et comme le fait remarquer zen69, les chemins a/b/c sont valables sous WinXP/Vista.

L'expression suivante semble couvrir mes remarques :

^(([a-zA-Z]:|(\\|/))?(\\|/))?(([^\\/:*?"|<> ]([^\\/:*?"|<> ]|[^\\/:*?"|<>]*[^\\/:*?"|<>. ])?)(\\|/))*([^\\/:*?"|<> ]([^\\/:*?"|<> ]|[^\\/:*?"|<>]*[^\\/:*?"|<>. ])?)?$

Je n'ai pas désactivé les captures (?:foo), pour simplifier...
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
est-ce qu'il accept les chemain de style linux avec des /

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.