用于匹配分层URL的正则表达式

时间:2014-03-31 09:22:43

标签: asp.net regex url web

我有这个正则表达式

^([^\.]+)\.aspx$

仅匹配以下

FolPage.aspx
~/FolPage.aspx
~/Folder/FolPage.aspx
~/Folder/Folder1/Folder2/FolPage.aspx
~/Folder/Folder1/Folder2/Folder3/Folder4/FolPage.aspx

我想要一个与上面的url匹配的正则表达式以及Url'

下面的正则表达式
../FolPage.aspx
../Folder/FolPage.aspx
../Folder/Folder1/Folder2/FolPage.aspx
../Folder/Folder1/Folder2/Folder3/Folder4/FolPage.aspx

您可以看到演示 Here..!!

其实我正在尝试进行网址重写..

<rewrite>
  <rules>
    <rule name="Redirect" stopProcessing="true">
      <match url="^([^\.]+)\.aspx$" />
      <conditions>
        <add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" />
      </conditions>
      <action type="Redirect" url="{ToLower:{R:1}}/" appendQueryString="false" redirectType="Permanent" />
    </rule>
    <rule name="Rewrite" stopProcessing="true">
      <match url="^([^/]+)/$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="{R:1}.aspx" />
    </rule>
  </rules>
</rewrite>

我需要正则表达式重定向重写

4 个答案:

答案 0 :(得分:1)

我会建议这个正则表达式:

^( *\.\.)?([^\.]+)\.aspx$

rubular demo

( *\.\.)?匹配可选空格,后跟双点。

答案 1 :(得分:1)

以下是一个有效的示例:

/^([~\.]{1,2})([^\.]+)\.aspx$/

http://rubular.com/r/WqLtHxolkf

答案 2 :(得分:0)

你可以尝试这个:

^(?:\.\.|[^\.])+\.aspx$

这意味着..not .

答案 3 :(得分:0)

试试这个正则表达式:

^(\.{2}|~)?.+\.aspx$

描述

Regular expression visualization

演示

http://rubular.com/r/UPoFog0Abj