2013-07-28 63 views
2

我有了這個RegExp貪婪全球正則表達式匹配

RegExp('f(o+)', 'g').exec('fofoofooofoooo') 

結果Array res,我期待得到:

res[1] === 'o' 
res[2] === 'oo' 
res[3] === 'ooo' 
res[4] === 'oooo' 

而是我:

res === [ 'fo', 
    'o', 
    index: 0, 
    input: 'fofoofooofoooo' ] 

有沒有辦法讓我的預期結果?我只得到第一場比賽。

回答

3

使用.match代替.exec

'fofoofooofoooo'.match(RegExp('f(o+)', 'g')) // ["fo", "foo", "fooo", "foooo"] 

用於匹配一個正則表達式的字符串時檢索匹配。

+0

請注意,這是因爲'.exec'不會像'期望的那樣'兌現'g'標誌。如果你離開'match'的'g'標誌,你會得到與exec相同的結果。 –