Question

Je suis en train de faire correspondre les demandes d'une URL qui n'ont pas un caractère de dossier (/) ou se terminer par une extension (.aspx). Je peux passer sous silence querystring valeurs et des fragments dans l'expression régulière pour l'instant. Jusqu'à présent, je donne les résultats suivants.

^([\w-/]+)(?!\.aspx|/)$

Cependant, si je cours cette expression il a choisi la finale / dans le groupe que je ne veux pas faire. L'objectif est d'ajouter à .aspx urls qui ne l'ont pas spécifié à l'aide Isapi ReWrite puis transmettre la demande sur le moteur .NET.

l'exemple ci-dessous montre tous les caractères dans un match en cours en gras

asd.aspx
cette something.aspx
ce / test / (ne veulent pas que la finale /)
ce test / (ne veulent pas que la finale /)
ce test ce test / que / test

Quelqu'un peut-il proposer une expression qui ne choisirait pas la finale / se trouve dans l'expression?

Était-ce utile?

La solution

Essayez une affirmation regarder en arrière:

^([\w-/]+)(?<!/|\.aspx)$

Autres conseils

Déplacer les / à l'extérieur du groupe ():

^([\w-/]+)(?!\.aspx)/?$

Votre première phrase ne correspond pas à l'expression régulière ou des exemples.
Il me semble que vous voulez:

  1. Si la chaîne se termine par .aspx ne traitent pas encore.
  2. Sinon, si la chaîne se termine par / supprimer cette barre oblique.
  3. Processus de la chaîne.

Peut-être que vous essayez d'en faire trop avec une expression régulière?

Pourquoi pas tester explicitement votre extension (.aspx), et si vous ne l'avez pas détecter puis une barre oblique terminal et retirez-le, avant le traitement supplémentaire de la chaîne?

C'est-à-dire:. Je suis sûr qu'il est possible de créer une expression régulière, avec préanalyse négative, qui fera 1 et 2, mais ne serait-il plus clair de le faire explicitement

Vous pouvez également tester quelques exemples:

foo/bar/.aspx
foo/bar.aspx/
foo.aspx/bar
foo.aspx/bar/

Juste pour être sûr que vous savez ce que vous vous attendez en sortie.

Retirez la / du regex et l'ajouter à l'extérieur et préciser qu'il peut avoir occurrence 0 ou 1.

^ ([\ w - /] +) (?!. ASPX) (/) {0,1} $

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top