在javascript中从参数化字符串中解析值

在javascript中从参数化字符串中解析值,javascript,regex,string,Javascript,Regex,String,假设我有一个字符串,例如: var map = "/directory/:id/thumbnails/:size"; var str = "/directory/10/thumbnails/large"; 我想用它来映射另一个字符串(本质上,与Rails用于定义路由的内容相同),例如: var map = "/directory/:id/thumbnails/:size"; var str = "/directory/10/thumbnails/large"; 我想“比较”这两个字符串,

假设我有一个字符串,例如:

var map = "/directory/:id/thumbnails/:size";
var str = "/directory/10/thumbnails/large";
我想用它来映射另一个字符串(本质上,与Rails用于定义路由的内容相同),例如:

var map = "/directory/:id/thumbnails/:size";
var str = "/directory/10/thumbnails/large";
我想“比较”这两个字符串,并返回一个键值对或JSON对象,该对象表示映射到
map
str
部分,在上面的示例中,该部分如下所示:

obj = {
    'id'   : '10',
    'size' : 'large'
}

这是否适合JavaScript正则表达式?有人能帮我吗?

我发现编写代码比解释更容易:)

var-map=“/directory/:id/thumbnails/:size”;
var str=“/directory/10/thumbnails/large”;
var obj={};
var mapArr=map.split('/');
var strArr=str.split('/');
if(mapArr.length!=strArr.length)返回false;
对于(变量i=0;i”);
}
您也可以在此处看到它的实际作用=>

如果您有任何问题,一定要询问,但代码应该是不言自明的。还要注意的是,没有常见的空检查和我通常放进去的东西——这只是一个快速而肮脏的概念证明


哦,如果我的回答不清楚的话;不,我不会使用正则表达式,因为那样我会有两个问题而不是一个问题。

用javascript而不是服务器端语言这样做有什么好的理由吗?我实际上并没有用它来路由,这只是最方便的例子,因为这是每个人都可能熟悉的。是的,这是可能的。您可以使用regexp将映射转换为regexp,然后使用该regexp解析有问题的字符串。@Jason:您能给我举一个JS示例吗?请想想可爱的widdle aminals,并使用正确的术语。