2012-10-05 170 views
1

我正在使用JavaScript路由器,如Backbone,Sammy,Spin。但我的要求很簡單。我們應該能夠給它一組路由及其相應的回調,並且我們應該可以根據請求處理瀏覽器URL。Javascript路由正則表達式腳本

我可以如何替換:僅用於數字處理的ID和:常見slu slu的slu??

我寫了這個代碼:

core.route = function(route, options, callback) { 
    var url = options.hash; 
    var route_segments = route.split('/').length-1; 
    var hash_segments = url.split('/').length-1; 
    var route_matcher = new RegExp(route.replace(/:[^\/]+/g, '([\\w-]+)')); 
    if (url.match(route_matcher)) { 
     if (route_segments === hash_segments){ 
      callback(); 
     } 
    } 
}; 


core.route('/work/:slug/:id/', options, function() { 
    alert("work/example/id"); 
}); 

core.route('/work/:id/', options, function() { 
    alert("work/id/"); 
}); 
+1

它可能會幫助,如果你定義一個共同的鼻涕蟲是什麼。 –

+0

請提供樣品輸入和預期輸出 – Tadgh

回答

0

你必須定義什麼鼻涕蟲模樣第一。但在正則表達式數字的\d+匹配字符串,那麼你可以試試這個:

core.route('/work/:slug/(\\d+)/', options, function() { 
//... 
core.route('/work/(\\d+)/', options, function() { 
//... 
+0

工作很好,謝謝!但我需要適用於這個正則表達式規則:/ ^(?![0-9] * $)[a-z0-9 - ] + $/ – MSTRKRFT