正则表达式匹配javascript中的SVG路径数据

时间:2011-01-13 15:32:32

标签: javascript regex path svg

var string = "M-84.1487,-15.8513 a22.4171,22.4171 0 1 0 0,31.7026 h168.2974 a22.4171,22.4171 0 1 0 0,-31.7026 Z";
var regex = "[a-zA-Z][0-9, /-/.]*";
var array = string.match(regex);

任何人都可以帮助我使用正则表达式来匹配各个指令(array[0] == "M-84.1487,-15.8513"; array[1] == "a22.4171,22.4171 0 1 0 0,31.7026";

非常感谢

1 个答案:

答案 0 :(得分:2)

根据BNF description,您可以将指令标识为字母,后跟任何非字母的字母。

var pathData = "M-84.1487,-15.8513 a22.4171,22.4171 0 1 0 0,31.7026 h168.2974 a22.4171,22.4171 0 1 0 0,-31.7026 Z";
var pathSegmentPattern = /[a-z][^a-z]*/ig;
var pathSegments = pathData.match(pathSegmentPattern);

当然你可能希望trim结果,但这不应该太难。

另外,请尽量不要将变量命名为无意义(stringregexarray)。在我看来,这比命名abc更糟糕。