2014-02-22 80 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

相關問題