2010-07-31 40 views
0

我有一個字符串,表示由空格分隔的標記列表。它可能看起來像這樣:需要幫助Javascript正則表達式 - 拆分文本

Australia 2010 David November Family 

如果一個標籤至少包含一個空格,則必須加引號。所以字符串可以是:

"Best Friends" "My Pictures" Wow "Very Nice Photo" University 

引用也允許單個單詞。例如:

"Good One" Fantastic "February" "My Family" "Friends" 

的問題是:
你如何獲得的標籤從字符串數組?
例如,從第三個字符串我想獲得以下數組:

arr[0] = "Good One" 
arr[1] = "Fantastic" 
arr[2] = "February" 
arr[3] = "My Family" 
arr[4] = "Friends" 

如果字符串是不正確的格式,我想知道它(例如:讓空數組結果是)。

+0

如果你想要創建一個換行符,只需在該行的末尾放置兩個空格。另請參閱:http://stackoverflow.com/editing-help或創建新問題時的「如何格式化」框。 – 2010-07-31 14:41:55

+0

什麼是*不是正確的格式? – 2010-07-31 14:52:36

+0

例如:'我是'壞'一個' – 2010-07-31 14:57:14

回答

3

您可以使用像/"[^"]+"|\w+/這樣的正則表達式來匹配標籤。 獲取包含所有的比賽不帶引號的數組,你可以使用像

var re = /"[^"]+"|\w+/g; 
var result = []; 
var match; 
while(match = re.exec(input)) 
    result.push(match[0].replace(/"/g, "")); 

如果您不必刪除引號,你可以只使用

var result = input.match(re); 
+2

'/「[^」] +「| \ S +/g'會添加對不帶引號的字符串中任何字符的支持 – Ties 2010-07-31 14:56:16