2012-07-30 67 views
0

我想獲取括號內的所有字符串。例如,應用正則表達式後如何使用正則表達式讀取括號內的所有字符串

"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); " 

輸出應該

['xyz','abcd', 'abcd.ef']. 

我試過很多選項,但沒能得到期望的結果。 一個選項是
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')")

+1

那麼,當你已經有了答案時,你爲什麼問這裏? http://www.rubular.com/r/rWMUMS8a36 – mellamokb 2012-07-30 20:58:40

回答

1

商店正則表達式中的變量,並在循環中運行它...

var re = /fun\((.*?)\)/gi, 
    string = "fun('xyz'); fun('abcd'); fun('abcd.ef')", 
    matches = [], 
    match; 

while(match = re.exec(string)) 
    matches.push(match[1]); 

請注意,這僅適用於全球正則表達式。如果您省略g,則會產生無限循環。

另請注意,如果在引號之間存在),它會給出不希望的結果。

0

您可以使用此代碼幾乎做的工作:

"fun('xyz'); fun('abcd'); fun('abcd.ef')".match(/'.*?'/gi); 

你會得到["'xyz'", "'abcd'", "'abcd.ef'"]包含額外'串繞。

0

找到你所需要的最簡單的方法就是使用這個正則表達式:/[\w.]+(?=')/g

var string = "fun('xyz'); fun('abcd'); fun('abcd.ef')"; 
string.match(/[\w.]+(?=')/g); // ['xyz','abcd', 'abcd.ef'] 

它將與字母數字字符和點工作,你將需要改變[\w.]+添加更多的符號。

相關問題