2012-06-22 50 views
1

我想學習如何打破這種字符串:JS regex.exec()返回第一個找到

var str = 'red','blue','gree' 

我有這樣的工作代碼:

var clean = str.replace(/\'/g, ""); 
var elements = clean.split(','); 

產生陣列["red","blue","green"]這是但是我想要什麼。編號喜歡學習如何使用regex.exec()方法做到這一點。

這裏是我的了:

var patt = /([^']+)/g; 
var elem= patt.exec(str); 

但這返回數組["red","red"]

什麼想法?

+0

我建議你堅持'split'。 RegEx對此任務過度。 – Joseph

+0

這是什麼:'var str ='red','blue','gree''?我懷疑它在做你打算做的事情。你的意思是它是這樣一個單一的字符串:'var str =「'red','blue','gree'」;'?或者像這樣的一串字符串:'var str = ['red','blue','gree'];' – jfriend00

回答

2

隨着exec,得到多個匹配,你需要在一個循環中運行它...

var str = "'red','blue','gree'"; // making a guess here 

var patt = /([^']+)/g; 
var match; 

     // v----yes, an assignment 
while(match = patt.exec(str)) { 
    console.log(match[1]); 
} 

DEMO:http://jsfiddle.net/D62D4/

本身的指數過去全球正則表達式店最後一場比賽的結束,並執行從該點開始的下一個查詢。

這樣繼續下去,直到沒有匹配,此時索引設置回0

您可以使用.lastIndex屬性在正則表達式上觀察和修改此索引。