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";
)
非常感谢
答案 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结果,但这不应该太难。
另外,请尽量不要将变量命名为无意义(string
,regex
,array
)。在我看来,这比命名a
,b
或c
更糟糕。