Простое регулярное выражение IIS 7 с необязательными значениями 1, 2 или 3 - PullRequest
3 голосов
/ 18 ноября 2010

Я пытаюсь заставить регулярное выражение соответствовать следующему URL:

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

и переписать его на default.aspx?= (newyear) & type = (food) & category = (maincourse)

Он прекрасно работает с:

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

, но я бы хотел, чтобы он работал только с www.mydomain.com / newyear / food / и просто переписать с category пусто.Единственный способ сделать это сейчас - это с помощью n00bing и создать 3 правила перезаписи - по одному для каждого значения.

Я уверен, что есть более разумный способ, и, пожалуйста, дайте мне знать.:)

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Должно быть очень простым, сделать слеш и последние два токена необязательными:

([_0-9a-zA-Z]+)/?([_0-9a-zA-Z-]*)/?([_0-9a-zA-Z-]*)/?$
1 голос
/ 18 ноября 2010

Если вы ищете «не просто», вы можете выполнить проверку юникода, поскольку теперь URL-адреса могут их принимать (хотя вы не можете выбрать их для своего собственного домена выше).

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