2012-08-01 80 views
0

我有這樣使用`.match()`到大括號{}

[{somevalue1},{somevalue2}] 

數據我想提取datawithin內數據分離

我用

var data = data.match(/[{][^\"]+[}]/g); 

但我括號收到null值。

+2

'.match'是一個原生JavaScript函數,它與jQuery無關。你的表達不匹配,因爲'[^ a]'匹配任何字符而不是'a',所以它匹配到{{somev',然後失敗,因爲下一個字符是'a'而不是'}'。你爲什麼使用'[^ ​​a]'? – 2012-08-01 21:48:28

+1

只是爲了驗證......您提供的字符串格式與JSON類似,儘管對象並不完全正確的JavaScript對象。你不是試圖手動解析一個JSON編碼的字符串,對嗎?如果你是,我強烈建議使用這個庫,而不是... https://github.com/douglascrockford/JSON-js/ – rybosome 2012-08-01 22:02:55

+0

@HerroRygar是的。我試圖手動解析Json .. – 2012-08-01 22:53:10

回答

1

您可以使用此:

data = data.match(/\{([\w\s]*)\}/g); 

\ W會尋找字母,並\ S的空間。

+2

爲什麼不使用'[^}] *'而不是'[\ w \ s]'?這會佔用'''或'$'等特殊字符。 – 2012-08-01 21:58:40

+0

爲什麼不使用'.'或'[^}]'? – Bergi 2012-08-01 21:59:01

+0

'\ {([^}] *)\}'也是一種可能性。由於我不知道應該對用戶有效的格式是什麼,我寧願只考慮字母數字和空格:) – guiligan 2012-08-01 22:08:24

0
data=data.match(/\{([^}]*)\}/g);