用于处理带日期的URL的RegEx模式

时间:2014-03-15 02:06:55

标签: regex url-rewriting

我搬到了一个新网站,它破坏了我的网址。现在可以从多个网址访问博客帖子,并希望将一种模式重定向到另一种模式。

我正在尝试将第一个案例重定向到第二个案例:

~/blogs/johndoe/john-doe/2014/03/14/test-article1 =>
~/blogs/john-doe/2014/03/14/test-article1

~/blogs/jimjones/jim-jones/2014/03/14/test-articleb =>
~/blogs/jim-jones/2014/03/14/test-articleb

如何创建一个足够聪明的模式来切出第一个" johndoe"和" jimjones"?我正在使用它进行IIS重写,但我认为任何RegEx都应该可行。谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

这有效:

^~/blogs/\w+/(\w+)-(\w+)/(\d{4})/(\d\d)/(\d\d)/([\w-]+)$

Regular expression visualization

Debuggex Demo

它只是丢弃非破折号名称。它不知道它是否等于短划线名称。并且它还假定日期编号有效。 9899/45/33将匹配。

捕获组:

  1. 名字
  2. 姓氏
  3. 文章名称

答案 1 :(得分:0)

我不知道IIS重写,但这应该有效:

/^~/blogs\/[a-z]+\/ -> ~/blogs/

正则表达式将匹配字符串的开头,后跟~/blogs/,后跟一个全部小写字符的字符串。

答案 2 :(得分:0)

我不使用IIS,但这应该至少接近。

模式:

^blogs/\w+/(\w+/)

动作

blogs/{R:1}

Handy usage doc