Javascript路由正则表达式脚本
我正在开发一个Javascript路由器,比如主干网、Sammy、Spin。但我的要求很简单。我们应该能够给它一组路由和它们相应的回调,并且我们应该能够根据请求处理浏览器的URL 如何将:id替换为仅使用数字,将:slug替换为普通slug 我写了这段代码:Javascript路由正则表达式脚本,javascript,ajax,regex,router,Javascript,Ajax,Regex,Router,我正在开发一个Javascript路由器,比如主干网、Sammy、Spin。但我的要求很简单。我们应该能够给它一组路由和它们相应的回调,并且我们应该能够根据请求处理浏览器的URL 如何将:id替换为仅使用数字,将:slug替换为普通slug 我写了这段代码: core.route = function(route, options, callback) { var url = options.hash; var route_segments = route.split('/').
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/");
});
你必须先定义一个鼻涕虫是什么样子的。但是
\d+
匹配正则表达式中的数字字符串,因此您可以尝试以下方法:
core.route('/work/:slug/(\\d+)/', options, function() {
//...
core.route('/work/(\\d+)/', options, function() {
//...
为什么不先看看主干网的路由实现,然后再考虑一下真正需要什么呢?这应该是可能的,您也可能会发现:
如果您定义了什么是常见的slug,可能会有所帮助。请提供示例输入和预期输出,非常感谢!但是我需要应用这个正则表达式规则:/^(?[0-9]*$)[a-z0-9-]+$/谢谢,我自己用这个代码解决了它:var route_regex=new RegExp(route.replace(/:[name]+/g'([\\a-z-]+)。replace(/:[id]+/g'([\\d]+));