正则表达式从网址获取页码

时间:2010-07-04 20:31:13

标签: c# asp.net asp.net-mvc regex

我目前正在使用此正则表达式从网址获取页码:

 @"\/(\d+)$";

适用于以下网址的工作正常:

  

/ some_category / 2
  / some_category2 / 323

我的网址现在有一些额外的查询字符串值(可选),因此当前的正则表达式不适用于这些情况。

所以现在我需要一个正则表达式来支持:

  

/ some_category / 2
  / some_category2 / 323
  / some_category2 / 323 = 1&安培; B = 2
  ?/ some_category2 / 323和C = 123&安培; A = 1和b = 2

任何帮助都将不胜感激。

我正在使用带有通配符的路由,因此我可以使用内置的asp.net mvc。

3 个答案:

答案 0 :(得分:4)

应为/(\d+)

无需逃避前斜线。 $字符是一个行尾字符,由于数字出现在行尾

之前,因此无法正常工作

答案 1 :(得分:2)

如果你正在使用MVC,为什么你需要一个Regex用于URL呢?难道你不能简单地在ActionResult中获取数字吗?

假设你的路线是

// Default Catch All MapRoute
routes.MapRoute("Default", "{controller}/{action}/{id}", new {
    controller = "Home",
    action = "Index",
    id = UrlParameter.Optional
})

然后使用

public ActionResult myAction(int id){
    // get your "number" by using the "id" variable
}

答案 2 :(得分:0)

试试这个。适用于JavaScript。

@"/(\d+)\??.*$";