php - 获取 CSS 属性大小值的正则表达式?

标签 php css regex

我写了一个正则表达式来从 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 的值。

我明白为什么它会返回上面的内容,但似乎无法弄清楚如何只返回尺寸而不返回颜色值。我尝试使用以下负面回顾,但它也不起作用:

/(((?<!#\d{3}|#\d{6})[+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i

我想为那些可以有多个尺寸值(即边距)的 CSS 属性使用 preg_match_all。

有人知道如何让这个正则表达式只返回尺寸值吗?

感谢您的帮助!

最佳答案

好吧,所以在我问这个问题 5 分钟后我想通了。使用正向后视并检查“”或分号。

'/((?<=\s|:)([+-]?\d*\.?\d+(\s)*(px|em|ex|pt|in|pc|mm|cm)?)|thin|medium|thick)(\s|;|$)/i'

关于php - 获取 CSS 属性大小值的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10942949/

相关文章:

php - 在 Laravel/swiftmailer 中使用自定义 SMTP 服务器失败,相同的设置在 Thunderbird 中有效

php - 使用 iframe 的任何缺点

php - Joomla 3 隐藏特定页面的内容

html - 固定菜单,但正文覆盖了菜单

.net - PowerShell -match 运算符和多个组

php - PHP 的基本面向对象

html - Joomla 烦人的页脚

html - 为表格的所有行设置固定高度

java - 为什么这个正则表达式不起作用?

java - 发现如果 Minus 出现在被认为是负数的数字的开头