2010-07-01 7 views
0

quelqu'un peut me dire le javascript expression régulière pour le chemin physique commeexpression régulière chemin physique

1) L'utilisateur doit entrer quelque chose comme ça dans la zone de texte (c: // Dossier1 /). Peut-être dans D: ou E:

2), mais après cela acceptable

a) (c: // Folder1/Dossier2 /)

b) (d: // Folder1/Dossier2/Folder3/abc.txt)

e) (c: //Folder1/Folder2/Folder3/abc.txt)

+0

Pouvez-vous expliquer ce que vous entendez par obligatoire et non obligatoire? – Amarghosh

+0

Je pense que OP signifie que la chaîne testée doit correspondre à '1' pour correspondre. ça ne devrait pas exiger '2', mais ça devrait correspondre à ça aussi, si c'est là. je dirais que ce sont trop peu de détails pour pouvoir écrire une bonne expression, et vraiment, les chemins physiques ne ressemblent pas à ça. –

+0

Pouvez-vous donner quelques autres exemples de choses qu'il devrait correspondre et, surtout, des choses qu'il ne devrait pas correspondre. – rjmunro

Répondre

1

A partir des exemples que vous avez donné, quelque chose comme cela devrait fonctionner:

[a-zA-Z]://(\w+/)+ 

-à-dire:
[a-zA-Z] = une seule lettre (majuscule ou minuscule)
suivie
:// = les caractères ": //"
Suivi par:
(\w+/)+ = au moins un "quelque chose /".
"quelque chose /" défini comme:
\w+ = au moins un caractère de mot (toute alphanumérique), suivie par
/ = caractère littéral "/"

Hope this helps - ma syntaxe peut être un peu off comme je ne suis pas complètement à la vitesse sur la variante javascript pour regex. Editer: mettre regex dans les tags de code afin qu'il soit visible! Et ranger l'explication.

+0

+1. les barres obliques doivent être échappées dans les littéraux d'expression régulière de JS (bien que, pour être honnête, nous ne sachions pas vraiment que nous avons affaire à un littéral regex). mais dans l'ensemble, cela semble être une approche raisonnable. –

+0

Intéressant - je ne le savais pas. Donc probablement où que je mets "/" ça devrait être "\ /"? – sam

+0

Eh bien, vous n'avez pas besoin si vous écrivez 'new RegEx (" [az]/")' mais en javascript, il y a un raccourci pour l'expression régulière, '/', tout comme entourant quelque chose entre guillemets. ish pour 'new String (" a ")'. donc 'var a = new RegEx (" [az] "," g ")' est souvent écrit comme 'var a =/[az]/g' et * alors * vous devez bien sûr échapper'/'avec' \/' –

1

Ce problème est plus compliqué que vous ne le pensez. Vous essayez de valider un chemin, mais les chemins peuvent être étonnamment difficiles à valider correctement. Traitez-vous correctement les chemins réseau UNC, par exemple?

Ceci est connu sous le nom canonicalization problem et fait partie de l'écriture de code sécurisé. Je suggère de vérifier some guidance from Microsoft pour canoniser correctement et valider le chemin dans votre application. L'avantage de canoniser votre chemin est que vous validez implicitement son format car le formulaire canonique sera renvoyé à partir d'un appel de bibliothèque qui ne retournera que les chemins potentiellement valides (correctement formatés). Cela signifie que vous n'avez à faire aucune sorte de validation regex. Juste jeter votre chaîne à la méthode qui canonise le chemin (Path.GetFullPath() probablement) et gérer l'exception pour un chemin invalide.

+0

Eh bien, très bon point que vous avez fait je vais continuer à voir – maztt