正则表达式匹配文件扩展名同时忽略查询字符串
Regex to match file extension while ignoring query string
我想构建一个 IIS url 重写规则来匹配多个文件扩展名但忽略查询字符串。
样本:
/hello.html // Match
/test?qs=world.html // Should not match
/test?qs=world.html&qs2=x // Should not match
以下是我使用的无法正常工作的内容:
<add matchType="Pattern" input="{HTTP_URL}" pattern=".+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
使用\w+
代替.+
.....................(\w
等同于[a-zA-Z0-9_]
) :
<add matchType="Pattern" input="{HTTP_URL}" pattern="\w+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
如果你想允许其他字符(未包含在 \w
中)并且仍然忽略查询字符串,你可以使用 [^?]+
而不是 .+
看看这是否适合你:
我写在javascript,(我不知道IIS)但是正则表达式总是相似的
/^.*\/[\w]+\.[\w]{2,4}$/.test('/test?qs=world.html') // return false
/^.*\/[\w]+\.[\w]{2,4}$/.test('/world.html') // return true
也许它可以作为:
<add matchType="Pattern" input="{HTTP_URL}" pattern="^.*\/[\w]+\.[\w]{2,4}$" negate="true" />
但我将扩展名作为通用方式。如果要对扩展进行白盒测试,可以替换为:
^.*\/[\w]+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$
我假设这在 IIS 中有效:^[^?]*$
将匹配任何不包含 ?
.
的字符串
我想构建一个 IIS url 重写规则来匹配多个文件扩展名但忽略查询字符串。
样本:
/hello.html // Match
/test?qs=world.html // Should not match
/test?qs=world.html&qs2=x // Should not match
以下是我使用的无法正常工作的内容:
<add matchType="Pattern" input="{HTTP_URL}" pattern=".+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
使用\w+
代替.+
.....................(\w
等同于[a-zA-Z0-9_]
) :
<add matchType="Pattern" input="{HTTP_URL}" pattern="\w+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$" negate="true" /> <!--Any url with a dot for file extension-->
如果你想允许其他字符(未包含在 \w
中)并且仍然忽略查询字符串,你可以使用 [^?]+
而不是 .+
看看这是否适合你:
我写在javascript,(我不知道IIS)但是正则表达式总是相似的
/^.*\/[\w]+\.[\w]{2,4}$/.test('/test?qs=world.html') // return false
/^.*\/[\w]+\.[\w]{2,4}$/.test('/world.html') // return true
也许它可以作为:
<add matchType="Pattern" input="{HTTP_URL}" pattern="^.*\/[\w]+\.[\w]{2,4}$" negate="true" />
但我将扩展名作为通用方式。如果要对扩展进行白盒测试,可以替换为:
^.*\/[\w]+\.(js|css|less|html|eot|svg|ttf|woff|json|xml)$
我假设这在 IIS 中有效:^[^?]*$
将匹配任何不包含 ?
.