Expression régulière - nom de fichier [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 28-04-2006 à 02:39:59
Je te propose une autre solution qui bloque les mauvais caratère dans un tedit
je sais pas si ca peu t'aider ?
procedure TEDITEUR.Edit1KeyPress(Sender: TObject; var Key: Char);
var flagnon:boolean;
var TempKey: Smallint;
begin
TempKey := Smallint(Key);
flagnon:=true;
if (key in ['a'..'z',#8]) then flagnon:=false;
if (key in ['A'..'Z',#8]) then flagnon:=false;
if (key in ['0'..'9',#8]) then flagnon:=false;
if tempkey=8 then flagnon:=false;
if flagnon then key := #0;
end;
Marsh Posté le 04-05-2006 à 21:00:11
A priori seuls | : * < > \ / ? " sont interdits, tout le reste doit passer
Dans ton test tu ne laisses que les a-z et les chiffres, non ?
La regexp valide tout un chemin je présume, donc commençant par une lettre de lecteur, etc. Mais elle me semble quand même fort longue
Marsh Posté le 11-04-2006 à 14:17:37
Bonjour à tous,
dans mon appli, je souhaiterais, via une expression régulière, vérifier qu'un nom de fichier est valide (zorro.exe est autorisé alors que zor\ro*..exe ne l'est pas par exemple).
J'ai bien trouvé une expression qui fonctionne mais, accrochez-vous, elle est un peu longue ... :
^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?))\\)*[^\\/:\*\?"\|<>\. ](([^\\/:\*\?"\|<>\. ])|([^\\/:\*\?"\|<>]*[^\\/:\*\?"\|<>\. ]))?$
Si vous avez plus simple, je suis preneur.
Pour info, j'utilise le composant TRegExpr (http://regexpstudio.com/TRegExpr/TRegExpr.html)
Laurent.