随笔-121  评论-1534  文章-1  trackbacks-99

Javascript正则分组命名

Javascript的正则分组不支持命名,只好自己搞了一个。先把命名存入数组,然后匹配。

唉~~~有更好的解决方案么?

image

代码:

var route = '/{controller}/{action}/{id}',
    url = '/home/index/2';

groupRE(route, url); // ==> {controller:'home', action:'index', id:'2'}

/*
* @re: string, e.g.: '/{controller}/{action}/{id}'
* @s: string to match, e.g.: 'home/index/2'
* @return: dict, e.g.: {controller:'home', action:'index', id:'2'}
*/
function groupRE(re, s){
    var names = [], result = {}, cursor = 0;
    re = re.replace(/\{([^}]+)\}/g, function(m, g1){
        names.push(g1);
        return '(.+)';
    });
    re = new RegExp(re);
    var tmp = re.exec(s);
	if(tmp){
		for(var i=1; i<tmp.length; i++){
			if(names[i-1]){
				result[ names[i-1] ] = tmp[i];
			}
		}
	}
    return result;
}

作者:QLeelulu Follow QLeelulu on Twitter
出处:http://QLeelulu.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
posted on 2011-03-16 16:02 Q.Lee.lulu 阅读(752) 评论(1) 编辑 收藏

评论:
#1楼 2011-04-13 00:09 | JeeChang      
窃以为(.+)=>([^\/]+)效率上会有所提升
当然在这个例子里面看不出什么效果。只是在回溯上他的效率确实有区别


 回复 引用 查看   
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1986158 G7tGrpMUkjw=
昵称: lulu
网名: QLeelulu
大学: GDUT
城市: 广州=>珠海
职业: 打字员
CO. : PowerEasy => KingSoft
Mail: QLeelulu@163(gmail).com

Who Am I ?


Follow QLeelulu on Twitter
交流群 ASP.NET MVC交流群:
QQ群:1215279(满)
2群:1214648(满)
3群:47788243
(加的时候请注明)



昵称:Q.Lee.lulu
园龄:4年4个月
荣誉:推荐博客
粉丝:322
关注:7
<2011年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

搜索

 

常用链接

我的标签

随笔分类

随笔档案

.NET 资源

PowerEasy

我的好友

积分与排名

  • 积分 - 734675
  • 排名 - 65

最新评论

阅读排行榜

评论排行榜

推荐排行榜