2014-02-22 38 views
7

使用AngularJS + UI的路由器,我需要一个URL的两个单字之一匹配:匹配在AngularJS一个或另一个词UI路由器

/oneWord/.../secondWord ...

路由和控制器几乎完全相同,所以我想避免重复代码。

但是,使用我已经习惯了一个正则表达式,地方不工作的正则表达式应该工作:

url: '/{type:(oneWord|secondWord)}/:group',

然而,它抛出一个错误:

Unbalanced capture group in route '/{type:(oneWord|secondWord)}/:group'

正则表达式应该工作,因为这工作正常:

url: "/{page:[0-9]{1,8}}"

我知道(oneWord|secondWord)是一个有效的正则表达式,所以我错过了什么?

回答

23

根据documentation,您不应该在您的正则表达式模式中使用捕获圆括号。

这应该工作:url: '/{type:(?:oneWord|secondWord)}/:group'

+0

我完全错过了,我甚至读了那一天。谢谢。网站允许我接受答案。 – helion3

+0

任何建议,在正则表达式,如果第二个字是空的?它可以是'url:'/ {type :(?: oneWord | null)} /:group'' –

+0

这个参数的正则表达式应该与'oneWord'不匹配吗? – Vivek

相关问题