2012-06-14 286 views
2

匹配功能PARAMS我有一个这样的字符串:matrix(10, 0, 1, 0, -198, 23)JS正则表达式从字符串

然后我需要匹配的是函数的参数,并把数组:

var regexp = /.../gi 
var match = regexp.exe('matrix(10, 0, 1, 0, -198, 23)'); 

console.debug(match) // must return: [10, 0, 1, 0, -198, 23] 

我不是对正则表达式非常熟悉,但我认为这将是完成这项工作的最快方式。

拆分字符串在这种情况下是不可能的。

为awnsers性能测试:http://jsperf.com/regexp-match-vs-string-split

+0

[?你尝试过什么]的(http://whathaveyoutried.com/) – sczizzo

+0

很多的失败,正则表达式.... –

+0

'/ [\ + \ - \ d \ S,] +/.exec(str)'? –

回答

5
'matrix(10, 0, 1, 0, -198, 23)'.match(/-?\d+/g) 
+0

对不起,但它失败了,'-198'已经返回'198' –

+0

是啊 - 刚刚编辑。只包括 - ?在正则表达式中。 – KalEl

+0

是完美的,它的工作! :D –

1

三个步骤:

  1. 使用正则表达式来获得括号的内容
  2. 更换括号自己,什么也没有
  3. 上逗号分割其次是0或更多空格
var str = 'matrix(10, 0, 1, 0, -198, 23)', 
    regex = /\(.*\)/, 
    arr; 

str = str.match(regex)[0]; 
str = str.replace(/[()]/g, ''); 
arr = str.split(/,\s+/); 

​console.log(arr);​ 
+0

它不工作...第一个匹配返回null和分割不存在JavaScript作为默认... –

+0

我只是忘了'str.' ...编辑 –

+0

'SyntaxError:意外的令牌非法' –