我试图写一个正则表达式匹配一个有效的CSS类名结构。到目前为止我有这个:
$pattern = "([A-Za-z]*\.[A-Za-z]+\s*{)";
$regex = preg_match_all($pattern, $html, $matches);
但是,类名可以是以下格式,我的正则表达式不会匹配:
p.my_class{
}
p.thisclas45{
}
这些只是一些例子,我已经四处寻找如何在样式块中命名类的规则,但没有找到任何东西。有谁知道类命名约定的规则在哪里?
还有什么案子需要我考虑吗你会用什么正则表达式来匹配一个类名?
我已经使用PHPDOMDocument类将其缩小到一个样式块。
3条答案
按热度按时间k7fdbhmy1#
查看http://www.w3.org/TR/CSS21/grammar.html#scanner
根据这个语法和帖子Which characters are valid in CSS class names/selectors?,这应该是正确的模式来扫描css类:
注意:在css中,标记名不需要作为类的前缀。
.hello { border: 1; }
也是有效的。lymnna712#
这个regex:
将匹配以下任何一项:
您可以在RegExr,here上使用它。
lnxxn5zx3#
这个正则表达式将选择CSS文件中的所有类,无论CSS代码有多复杂。
例如:
输出: