Регулярное выражение соответствует нескольким данным в URL-адресе для правила перезаписи IIS

Мне нужна помощь с шаблоном регулярного выражения для перезаписи URL-адреса. Моя структура URL:

http://domain.com/[username]/[token]/[userid]/

Типы данных:

  • имя пользователя = буквенно-цифровое
  • токен = буквенно-цифровой
  • идентификатор пользователя = числовой

Пример с данными:

http://domain.com/john1975/aBc123/123456789/

Используя регулярные выражения, я пытаюсь получить ссылку для каждого фрагмента данных, поэтому я могу переписать:

index.asp?username={R:1}&token={R:2}&userid={R:3}

Также имейте в виду, что регулярное выражение не должно быть слишком жадным, поэтому я все еще могу получить доступ к таким файлам, как:

http://domain.com/about.asp
http://domain.com/images/logo.png

Я пробовал регулярное выражение:

^[0-9a-z]+/[0-9a-z]+/[0-9]+$

Это не соответствует моему примеру URL.


person RandomCoder    schedule 27.09.2013    source источник


Ответы (1)


Вам не хватает косой черты в конце. Регулярное выражение должно быть:

^([0-9a-z]+)/([0-9a-z]+)/([0-9]+)/$

Я предполагаю, что вы помечаете его как нечувствительный к регистру. Если нет, то вам нужно

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

Вам также нужны скобки, чтобы вы могли вызывать свои обратные ссылки, которые также неверны - вы хотите сопоставить 1,2 и 3, а не 0, что является совпадением всего выражения. Они должны читать:

index.asp?username={R:1}&token={R:2}&userid={R:3}
person alergy    schedule 27.09.2013
comment
Спасибо за помощь. Это соответствует URL-адресу моего примера, но помещает все в первую ссылку. Итак, я получаю: index.asp?username=john1975/aBc123/123456789/&token=&userid=. Как я могу получить отдельные ссылки с перезаписью IIS? - person RandomCoder; 27.09.2013
comment
ха, я понял это и только что отредактировал свой ответ, включив его - обратите внимание, что вам нужно заключить в скобки части правила, которые вы хотите извлечь. R:0 относится ко всему, а затем R:1 и т. д. относятся к конкретным совпадениям, указанным порядком, в котором встречаются скобки. - person alergy; 27.09.2013