2010-07-04 82 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

相關問題