2016-11-11 83 views
0

我正在尝试为IIS中的重写规则编写特定的正则表达式模式,如果它匹配模式以停止处理更多规则。正则表达式检查字符串是否只包含字符的最后一个实例之后和最后一个实例之前的数字

的URL会是这个样子:

somesite.com/somepath/34343.aspx

我要看看我只有一节34343号,我可以有 somesite.com /somepath/something343.aspx

我曾尝试与模式匹配,像这样:
([0-9] *)ASPX $
但这拿起后者URL并停止处理规则,使后来的比赛AREN。不会跑。我需要他们运行后面的规则,而不是停止处理。

所以,如果有人可以帮助,我需要一些方法来检查,如果我只剩下最后结尾斜杠之后和在最后有一个数字(点)

我也试过这样:() /() 这似乎给我我想要的东西,因为它给了我分组比赛。(*):

  • 完全匹配 - somesite.com/somepath/34343.aspx
  • 组1 - somesite.com/somepath
  • 集团2 - 34343
  • 集团3- ASPX

但我不知道如何使用组2然后检查文本只有数字?

任何人都可以帮忙吗?

感谢

编辑

感谢您的答复,但是这两种模式不是为我工作。我将它们插入到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

尝试['^。*/\ d + \。[^。] + $'](https://regex101.com/r/V08NkK/1) –

回答

0

感谢您的帮助,但我设法弄清楚为什么它没有解雇规则,现在看来工作。

我设置了失败的请求追踪规则,并注意到规则已从检查中删除了基地址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*\..+) 

这将检查它是否只包含数字。

相关问题