正则表达式匹配URL没有扩展名和特定的单词

时间:2017-01-13 12:39:06

标签: asp.net regex iis url-rewriting

我收到的网址如下:http://blog.test.com/post/2017/1/testpost-blog-January

我想制作一个Regex模式,该模式匹配带有 no 扩展名且带有 post 字样的网址。

[实施例]

http://blog.test.com/post/2017/1/testpost-blog-January - >匹配

http://blog.test.com/post/2017/1/testpost-blog-January.aspx - >没有比赛

http://blog.test.com/Testpage.aspx - >没有比赛

到目前为止我尝试过:

(?=.*^([^.]+)$)(?=.*post)

这不管怎么样。

你知道如何正确地重写我的模式吗?

Thx:)

1 个答案:

答案 0 :(得分:1)

您需要修复这样的前瞻:

^(?=.*post)(?!.*\.[^\/.]+$).*

请参阅regex demo(在演示中,\n被添加到否定字符类,因为它是一个多行演示。)

<强>详情:

  • ^ - 字符串开头
  • (?=.*post) - 一个积极的前瞻,要求字符串在任何0+字符之后有一个post字面字符序列
  • (?!.*\.[^\/.]+$) - 如果在任何0+字符之后有一个点后跟1 {+ 1}}和/以外的一个字符,那么将会导致匹配失败的负向前瞻串
  • . - 获得整行的匹配模式。