的Javascript正则表达式:从路径
试图从路径提取的变量名提取变量(变量之前包含:任选地被封闭的()),变量的数量可以变化的Javascript正则表达式:从路径
“富/酒吧/:firstVar /: (secondVar)foo2的/:thirdVar”
预期输出应为:
[ 'firstVar', 'secondVar', 'thirdVar']
试图像
"foo/bar/:firstVar/:(secondVar)foo2/:thirdVar".match(/\:([^/:]\w+)/g)
但它不工作(不知何故它捕获冒号&没有可选附件),如果有一些正则表达式法师,请帮助。提前感谢!
var path = "foo/bar/:firstVar/:(secondVar)foo2/:thirdVar";
var matches = [];
path.replace(/:\(?(\w+)\)?/g, function(a, b){
matches.push(b)
});
matches; // ["firstVar", "secondVar", "thirdVar"]
非常感谢你 – pentarim 2009-11-22 23:27:14
这个怎么样:
/\:\(?([A-Za-z0-9_\-]+)\)?/
比赛:
:firstVar
:(secondVar)
:thirdVar
$1
包含:
firstVar
secondVar
thirdVar
我可能会建议你看看URI template specification?它完全符合你想要做的,但更优雅。我不知道任何当前用于JavaScript的URI模板解析器,因为它通常是一个服务器端操作,但是最小的实现将是微不足道的。
,而不是本质上说,:
foo/bar/:firstVar/:(secondVar)foo2/:thirdVar
您使用:
foo/bar/{firstVar}/{secondVar}foo2/{thirdVar}
希望,这是很显而易见的,为什么这种格式工程的secondVar
的情况要好。另外它还有一个额外的优点,即成为一个规范,尽管目前仍然是一个草案。
感谢您的信息,但通过格式绑定(其Horde_Routes语法) – pentarim 2009-11-22 23:41:32
啊,是的。另一个项目感染了Rails式的路由。哦,值得一试。 – 2009-11-23 04:21:23
你到底想要捕捉什么?你能告诉我们你期望的结果吗? – 2009-11-22 23:19:56
这些是字符串,所以不太明白你的意思是换行 – pentarim 2009-11-22 23:21:43
我很困惑这个问题。你为什么想做这个?为什么网址看起来如此严重?你为什么不从一个查询段中提取变量? – Breton 2009-11-22 23:45:47