有谁知道从 css 声明中选择所有选择器的最强大的正则表达式是什么?下面是非标准 CSS 的 CSS 代码,这将是一个很好的测试用例。
.somenormalstyledeclaration
{
width:100%;
height:100%;
background-image: url(images/fallback-gradient.png);
}
.somenormalstyle1, .somenormalstyle2
{
width:100%;
height:100%;
background-image: url(images/fallback-gradient.png);
}
.gradient-bg
{
background-color: #1a82f7;
background-image: url(images/fallback-gradient.png);
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#2F2727), to(#1a82f7));
background-image: -webkit-linear-gradient(top, #2F2727, #1a82f7);
background-image: -moz-linear-gradient(top, #2F2727, #1a82f7);
background-image: -ms-linear-gradient(top, #2F2727, #1a82f7);
background-image: -o-linear-gradient(top, #2F2727, #1a82f7);
}
@-webkit-keyframes bounce_circle
{
0%
{
opacity:0.3;
}
50%
{
opacity:1;
background-color:#111
}
100%
{
opacity:0.3;
}
}
最佳答案
这应该可以大部分。它只有几个步骤,但不如完整的解析器好。
- 用空格字符替换所有换行符
- 假设您从不使用包含
{
或}
的字符串,您可以将/\{[^\}]\}/
替换为,
- 将所有文本拆分到每个
、
和;
字符上的数组 - 去除每个选择器开头和结尾的所有空白
数组的每个元素都应该是一个选择器或一个“at-rule”(即 @charset utf-8;
)。
我可能错过了一些其他边缘情况,但这应该是大多数情况下的快速解决方案。
关于php - CSS 选择器的正则表达式 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101873/