1

我有一个如下字符串

旋转(32)平移(0,-284.35468),平移(8545,84)矩阵(d,f,g,s,g)平移(-58,88)

每个函数可以用逗号或空格分隔。

我想使用javascript正则表达式查找“​​翻译”括号内的所有信息。所以在上面的例子中,期望的结果是:

["0,-284.35468","8545,84","-58,88"]

更具体地说,我想解析 SVG 规范中“g”标签的“transform”属性中找到的信息。可以在这里找到http://www.w3.org/TR/2011/REC-SVG11-20110816/coords.html#TransformAttribute

谢谢

4

1 回答 1

0

你可以尝试一些这样的事情:

var s = "rotate(32) translate(0,-284.35468),translate(8545,84) matrix(d,f,g,s,g) translate(-58,88)";

var re = /translate\(([^,]+,[^)]+)\)/g,
    results = [],
    c;

while (c = re.exec(s))
    results.push(c[1]);

// results is now ["0,-284.35468", "8545,84", "-58,88"]

在具有“g”标志的正则表达式上重复使用该.exec()方法将找到连续的匹配项。

在这种情况下,我们将获取返回的数组中的第二个元素,.exec()因为这将是与捕获括号中的正则表达式部分匹配的字符串部分。

于 2012-10-06T02:19:45.817 回答