2014-04-20 2 views
6

J'utilise le plugin de téléchargement de fichiers JQuery, pour donner de la valeur à l'option accepter les fichiers. J'ai besoin de l'expression régulière qui indique quels sont les types de fichiers à restreindre. Je dois limiter à la fois exe et js que j'obtenu en utilisant ci-dessous l'expressionExpression régulière pour exclure les types de fichiers .exe et .js

(\.|\/)(!exe|!js)$

Mais c'est l'expression ne permettait pas d'autres fichiers, ainsi j'ai essayé d'ajouter une rallonge comme ci-dessous

(\.|\/)(!exe|!js|pdf)$

Avec l'expression ci-dessus, il n'accepte que le pdf et n'accepte pas exe et JS. Maintenant, je dois activer pour toutes les extensions de fichiers, sauf exe et js. Il sera difficile d'ajouter toutes les extensions à l'expression. Pouvons-nous mentionner comment dans l'expression d'accepter d'autres types de fichiers, sauf exe et js dans le format similaire ci-dessus. Cette expression régulière est pour JS.

Merci,

Vinay

Répondre

10

Cela exclut .js et .exe à la fin de la chaîne, mais permettre à toute autre chose:

/^[^.]+$|\.(?!(js|exe)$)([^.]+$)/ 

dégradables:

  1. ^[^.]+$ correspond à toute chaîne sans points
  2. \.(?!(js|exe)$)([^.]+$) matchs un point uniquement s'il n'est pas suivi de js ou exe à la fin de la chaîne.

Les éléments suivants sont autorisés:

  • something.js.notjs
  • somethingelse.exee
  • /something.js/foo

Ne sont pas autorisés:

  • jquery.js
  • outlook.exe

Note: excluant certaines extensions de fichiers ne remplace pas la sécurité, et même si elle était des fichiers JS et EXE ne serait pas une liste noire complète. Si votre but en excluant certaines extensions est de protéger votre serveur ou vos utilisateurs, considérez une liste blanche d'extensions et une validation complète des données de fichier après le téléchargement.

+0

Merci pour les informations détaillées. L'expression régulière fonctionne avec un petit problème. Lorsque j'ajoute plus d'un fichier exe, l'outil n'affiche pas d'erreur de validation pour le second fichier exe. J'ai besoin de voir s'il y a un problème avec le plugin JS. – Vinay

0

Je ne sais pas ce travail ou non, mais 99% cela fonctionnera pour vous excluez cette exe ou l'utilisation d'extension js motif suivant

/\.(exe|js)$/ig 

de code suivant vous donner TRUE lorsque le fichier est sur votre liste noire. Sinon, donnez-vous FAUX

var result = /\.(exe|js)$/ig.test(filename); 

J'espère que cela vous aidera!

+0

Il fonctionne de manière totalement opposée. Son acceptant exe et js mais pas n'importe quel autre format. Pouvez-vous s'il vous plaît donner le contraire de cette condition, je pense que la condition négative pour cela va résoudre le problème – Vinay

+0

utilisez-vous le signe '!' Pour convertir la chose entière en condition négative. '/ \. (! exe |! js) $/ig' –

+0

Juste maintenant essayé cela, en gardant de cette façon, il est dit que tous les types de fichiers sont invalides, y compris exe et js – Vinay

1

Vous souhaitez utiliser la syntaxe (?! Pattern). En outre, tout en indiquant ce que vous voulez faire correspondre, vous ne dites pas ce qui doit correspondre. Donc, cela devrait faire l'affaire:

(\.|\/)(?!exe|js).*$ 

Ce dit « match tout ce qui est un point aussi longtemps que ce n'est pas suivi par « exe » ou « js », puis correspondre à ce que vous voulez après (.). "

+0

J'ai testé cette expression dans ce site http: // www.regexr.com/v1/ Je pense que cela fonctionne comme prévu mais quand je donne ceci comme option au plugin que j'utilise cela ne fonctionne pas, il accepte tous les types de fichiers. Je dois ajouter '/' à l'avant et ajouter '/ i' à la fin pour le donner correctement. Donc, la valeur finale que je passe à cette option est /(.|\/)(?!exe|js).*$/i va ajouter ceux à l'expression régulière fera une différence – Vinay

+0

Cela va retourner un faux négatif pour les chaînes comme 'foo.jss' et'/execution/files' – eyelidlessness

+0

Vous avez raison, @eyelidlessness. Je devrais faire le?! syntaxe (?! (exe | js) $). * $ –

Questions connexes