【问题标题】:Regex to match SVG path data in javascript正则表达式匹配 javascript 中的 SVG 路径数据
【发布时间】:2011-06-08 13:59:48
【问题描述】:
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";)

非常感谢

【问题讨论】:

    标签: javascript regex path svg


    【解决方案1】:

    根据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 更糟糕。

    【讨论】:

    • 谢谢,我试试看。为了这篇文章,变量只是这样命名的:)
    • @Tom 没问题。如果您发现此方法有任何问题,请告诉我。这很简单,但从文档中我可以看出,您不需要任何更复杂的东西。
    • 字母后面怎么加空格? pathData = pathData.replace(/[a-z]/ig , ?+" ");问号应该用什么代替?
    • pathData.replace(/[a-z]/ig , "$& ")Learn more.
    • 有点晚了,但是对于访问者,我创建了一个库来处理 SVG 路径,它比使用 RegExp 更安全:github.com/nfroidure/SVGPathData
    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 2022-08-11
    相关资源
    最近更新 更多