2010-07-04 91 views
1

我目前正在使用此正则表达式来从URL中的页面数从URL中获得页码:正则表达式来

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

这对于像URL工作得很好:

/some_category/2
/some_category2/323

我的网址现在有一些额外的查询字符串的值(可选地),所以目前正则表达式是不工作对于这些情况。

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

/some_category/2
/some_category2/323
/some_category2/323 = 1 & B = 2
/some_category2/323? & C = 123 &一个= 1 & B = 2

任何帮助,将不胜感激。

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

+0

我们可以看到你的MVC路线是什么样子? – 2010-07-04 21:41:45

回答

4

应该/(\d+)

无需逃离前斜线。 $字符是行尾字符,因为数字发生在行尾之前,所以不起作用

0

试试这个。适用于JavaScript。

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

如果您使用的是MVC,为什么您需要一个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 
} 
+0

+1 没有正则表达式在这里需要,实际上正则表达式将是一个不好的习惯。 – Stilgar 2010-07-04 21:42:38

+0

正则表达式在不需要的地方也增加了大量的开销。查询字符串仍将按预期运行,但您也可以从路径中检索URL参数,而不需要太多工作。 – 2010-07-04 22:05:51

+0

我说我使用通配符路由,这就是为什么,谢谢。 – Blankman 2010-07-05 15:01:03