2010-11-18 24 views
3

Je suis en train de faire une regex correspondre à l'URL suivante:simple IIS 7 avec option 1 regex, 2 ou 3 valeurs

www.mydomain.com/newyear/food/maincourse/

et ont ? il réécrire default.aspx occasion = (de) newyear & type = (alimentation) = & catégorie (de) maincourse

il fonctionne très bien avec:

([_0-9a-zA-Z]+)/([_0-9a-zA-Z-]+)/([_0-9a-zA-Z-]+)/$ 

mais je voudrais le travailler avec juste www.mydomain.com/newyear/food/ ainsi, et juste réécrire avec catégorie vide. La seule façon dont je peux le faire maintenant, est en n00bing, et en créant 3 règles de réécriture - un pour chaque valeur.

Je suis sûr qu'il y a une façon plus intelligente, et s'il vous plaît faites le moi savoir. :)

+0

Une question: pourquoi 3 règles? J'ai ajouté une réponse qui rend optionnel 'type' * et *' category', est-ce correct? – Kobi

Répondre

3

devrait être très simple, faire les barres obliques et les deux derniers jetons en option:

([_0-9a-zA-Z]+)/?([_0-9a-zA-Z-]*)/?([_0-9a-zA-Z-]*)/?$ 
+2

C'est exactement ce que je voulais qu'il fasse! Oh mon Dieu, l'efficacité d'une question. Merci Kobi! :) – kasperwf

1

Si vous êtes à la recherche d' « moins simple », vous pouvez le faire vérifier unicode depuis urls peuvent désormais accepter eux (même si vous ne pouvez pas les choisir pour votre propre domaine ci-dessus).

([[:alpha:]]|[[:punct:]])+/?([[:alpha:]]|[[:punct:]])*/?([[:alpha:]]|[[:punct:]])* 
+0

Que signifie vérification unicode et qu'est-ce que: alpha: et: punct: mean?/n00b – kasperwf

+0

@KasperFP pour le dire très brusquement et pas aussi précis que certains le voudraient, unicode est l'alphabet international. toutes ces lettres allemandes et espagnoles ne s'affichent pas comme a-z mais elles sont considérées comme un a-z en unicode. alpha désigne les caractères punc désigne la ponctuation., - "etc. Les caractères Unicode sont maintenant autorisés dans les adresses web, donc nous devrons commencer à les vérifier ... peut-être pas le vôtre mais vous ne savez jamais eh? 80))) – Keng

+0

aaah je comprends .. Comme nos lettres danoises æ, ø et å, que j'ai (jusqu'ici je vois) dû mettre après az dans mes regexes Merci encore, Keng :) – kasperwf