【发布时间】:2012-06-12 03:57:28
【问题描述】:
我写了一个正则表达式来获取 CSS 属性的大小:
/(([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i
但由于某种原因,它没有按预期工作。例如,当我运行以下命令时:
preg_match_all('/(([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i',
"border-bottom:1px solid #99999;", $matches);
它输出:
1px
99999;
但我只想返回 1px 的值。
我明白为什么它返回上述内容,但似乎无法弄清楚如何只返回大小而不是颜色值。我尝试使用以下负面的lookbehind,但它也不起作用:
/(((?<!#\d{3}|#\d{6})[+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i
我想将 preg_match_all 用于那些可以具有多个大小值(即边距)的 CSS 属性。
有人知道如何让这个正则表达式只返回大小值吗?
感谢您的帮助!
【问题讨论】:
-
使用CSS Parser。我会说像 HTML 这样的 CSS 可能不应该用 Regex 解析。