2012-08-01 91 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);