关于一段正则表达式的问题(来自backbone源代码)
最近在学习backbone的源代码,已经总结的差不多了,但是还有一点没有完全理解,就是backbone路由正则表达式的部分:(写了一点注释 但是不一定对)
var optionalParam = /\((.*?)\)/g;
//匹配(?:或者:加一个单词
var namedParam = /(\(\?)?:\w+/g;
//匹配*加上一个单词
var splatParam = /\*\w+/g;
//匹配正则表达式中常用的这些字符
var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g;
//......略去一些内容
_routeToRegExp: function(route) {
route = route.replace(escapeRegExp, '\\$&')//这个匹配的目的是将正则表达式字符进行转义
.replace(optionalParam, '(?:$1)?')
.replace(namedParam, function(match, optional) {
return optional ? match : '([^/?]+)';
})
.replace(splatParam, '([^?]*?)');
return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
},
我不太清楚这个_routeToRegExp函数具体每一步骤执行的意义,包括上文四个先前定义的正则表达式。
也可能是自己之前正则表达式的基础稍微弱些,已经写了注释的也可能理解的不对..
想请经验人士帮忙解释一下..谢谢?
附backbone源代码链接: https://github.com/jashkenas/...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)