2016-11-11 2 views
0

Я пытаюсь написать конкретный шаблон регулярного выражения для правила перезаписи в IIS и если он соответствует шаблону, чтобы прекратить обработку каких-либо правил.Regex проверить, имеет ли строка только номера после последнего экземпляра символа и перед последним экземпляром другого

адреса URL будет выглядеть примерно так:

somesite.com/somepath/34343.aspx

мне нужно, чтобы увидеть, если у меня есть только номера в разделе 34343, как я могу иметь somesite.com /somepath/something343.aspx

Я попытался соответствие шаблон следующим образом:
([0-9] *) ASPX $
Но это поднимает последний URL и прекращает обработку правила, чтобы позже матчи Арен. Не бегай. Мне нужно, чтобы они работали по более поздним правилам и не прекращали обработку.

Так что, если кто-то может помочь, мне нужен способ, чтобы проверить, если у меня есть только цифры после последнего слэш и до последнего (точка)

Я также попытался это:. (. ) /(.) , который, кажется, чтобы дать мне то, что я хочу, так как это дает мне сгруппированных матчи. (*.):

  • Полный somesite.com/somepath/34343.aspx
  • зазоры в замках
  • Группа 1 - somesite.com/somepath
  • Группа 2 34343
  • Группа 3- ASPX

Но я не знаю, как использовать группу 2, чтобы затем проверить, что текст только цифры?

Помогите пожалуйста?

Благодаря

EDIT

спасибо за ответы, но эти две модели не работают для меня. Я подключаю их к инструменту перезаписи IIS Url, и, хотя довольно замечательный вариант тестового шаблона говорит мне, что они совпадают, они, как правило, просто не срабатывают.

<rule name="Ignore id with aspx" enabled="true" stopProcessing="true"> 
    <match url="^(.*\/\d+\..+)$" ignoreCase="true" /> 
    <!--OR--> 
    <match url="^.*\/\d+\.[^.]+$" ignoreCase="true" />   
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
</rule> 

По крайней мере, это не прекращает обработку последующих правил.

Кстати, правило, которое я сказал, что я использовал ([0-9] *). Aspx $ запускает и прекращает обработку последующих правил.

+0

Try [ '^. */\ D + \. [^.] + $ '] (Https://regex101.com/r/V08NkK/1) –

ответ

0

Спасибо за помощь, но мне удалось выяснить, почему она не стреляла в правило и, похоже, сейчас работает.

Я установил Failed Request Tracing Rules и заметил, что правило удалило базовый url http://somesite.com/ из проверки.Поэтому он искал только последний бит Url.

Поскольку рассматриваемый Url был http://somesite.com/12345.apsx, было легко проверить только цифры и .aspx в запросе.

<rule name="Ignore id with aspx" enabled="true" stopProcessing="true"> 
    <match url="^\d*\..+[aspx]" ignoreCase="true" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
    <action type="None" /> 
</rule> 
0

Вы можете сделать регулярное выражение как это:

(.*\/)+(\d*\..+) 

Это будет проверять, если она содержит только цифры.

Смежные вопросы