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