2014-03-07 97 views
0

我試圖從大字符串中提取一些數據,我想知道是否有可能使用正則表達式。目前,我正在使用JavaScript。例如:JavaScript匹配使用正則表達式

This is some [example] text for my javascript [regexp] [lack] of knowledge. 

用這個字符串,我想生成一個JSON數組,其中包含方括號之間的文本。

example, regexp, lack 

我希望有人可以幫助我以簡單的方式做到這一點,所以我可以理解它是如何工作的。預先感謝您的幫助。牛!

+2

你有甚至試圖自己去解決呢?這是一個微不足道的正則表達式任務。 – zerkms

+0

「所以我可以理解它是如何工作的」---正則表達式(主要是編程中的所有內容)都需要閱讀,而不僅僅是模仿其他人的代碼。否則,只要你看到與你所知道的東西略有不同的東西,你就會陷入困境(實際上它幾乎不能稱爲「知識」) – zerkms

回答

1

http://jsfiddle.net/mE7EQ/

我寫了一個真正的快,如果您有任何關於它的問題,讓我知道!

var a = 'This is some [example] text for my javascript [regexp] [lack] of knowledge.' 
var results = a.match(/\[\w*\]/g); 

alert(results[0] + ' ' + results[1] + ' ' + results[2]); 
+0

非常感謝你的這一點,它的工作原理與我想要的一樣 –

+0

你是歡迎!我會建議閱讀東西,雖然在未來,尤其是如何正則表達式的工作。這非常值得學習,並且會很好地爲您服務!教一個男人去釣魚,他會自己養活自己,等等。 –

2
var text = 'some [example] text for my javascript [regexp] [lack] of knowledge.'; 
text.match(/\[(.*?)\]/g).map(function(m) { 
    return m.substr(1, m.length - 2); 
}) 
// => ["example", "regexp", "lack"] 
+0

非常感謝你,這個作品很棒,你能告訴我什麼(。*?)的意思是 –

+0

@PacuraruDaniel,'。。匹配任何角色。 '*'表示之前的模式('.'在這裏)應該匹配0次或更多次。默認情況下'。*'是貪婪的(儘可能匹配)沒有'?',它匹配'[例子]文本...缺乏]'。通過附加'?',它可以非貪婪的方式工作。 – falsetru

4
var str = "This is some [example] text for my javascript [regexp] [lack] of knowledge." 
var regex = /\[(.*?)\]/g, result, indices = []; 
while ((result = regex.exec(str))) { 
    indices.push(result[1]); 
}