2015-10-22 45 views
0

我有這樣的測試字符串:正則表達式匹配多個單詞反覆

{.aa1 .b3c .f4} 

我想提取先從括號內的文字點.字的任意數量。所以我寫了這個JavaScript正則表達式:

/{((?=\.\w+?)(\.\w+?)\s*?)*}/g 

我基本上放眼望去(?=\.\w+?),但如果有一個匹配它沒有捕獲,因爲先行爲零寬度,所以後來我捕捉(\.\w+?),然後允許的可能性空格\s*?,然後我分組所有這些,並嘗試通過重複與*重複它。但是,這是行不通的 - regex101.com告訴我返回:

MATCH 1 
1. `.f4` 
2. `.f4` 

..而我想比賽的數組是(.aa1.b3c.f4)。我怎樣才能做到這一點?

回答

2

您可以嘗試下面的基於正向lookahead的正則表達式。

string.match(/\.\w+(?=[^{}]*\})/g) 

我認爲括號必須正確關閉。

DEMO

+0

感謝@AvinashRaj - 非常棒! – sdaau