【发布时间】:2019-09-07 17:19:49
【问题描述】:
我是一个正则表达式初学者,我正在尝试使用 JavaScript 解析 <svg> 元素的 viewBox 属性。
viewBox 属性的规范如下所示:
'viewBox' 属性的值是四个数字的列表
、 、 和 ,由空格和/或逗号分隔 https://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute
所以在我的理解中,一个属性看起来像:
viewBox="10 10.2, 80 80" 有效。
我正在尝试构建一个基本上可以做到的正则表达式:
viewBoxString = "10 10.2, 80 80";
[xmin, ymin, width, height] = parseViewBox(viewBoxString);
function parseViewBox(viewBoxString) {...} 长什么样子?
我尝试通过连接我为浮点数和分隔符(可选逗号)找到的正则表达式来构建此函数。但它不会产生匹配...
function parseViewBox(viewBoxString) {
float=/[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)/
separator = /,?/
pattern = float + separator + float + separator + float + separator + float
return viewBoxString.match(pattern)
}
我想要的输出是:
xmin == 10,
ymin == 10.2
width == 80
height == 80
但我不知道怎么去那里。任何帮助将不胜感激!
【问题讨论】:
-
我会使用这个正则表达式:
(-?\d+\.?\d+,?\s?\,?){2}(\d+\.?\d+,?\s?\,?)\d+ -
绝对不需要使用正则表达式,DOM 会直接为您提供所有数字。
标签: javascript regex svg