正则表达式匹配CSS类名称

Abs*_*Abs 8 css php regex

我正在尝试编写一个匹配有效的CSS类名结构的正则表达式.到目前为止我有这个:

$pattern = "([A-Za-z]*\.[A-Za-z]+\s*{)";

$regex = preg_match_all($pattern, $html, $matches);
Run Code Online (Sandbox Code Playgroud)

但是,类名可以采用我的正则表达式不匹配的以下格式:

p.my_class{
}
p.thisclas45{
}
Run Code Online (Sandbox Code Playgroud)

这些仅仅是一些情况,我已经四处查找了如何在样式块中命名类但无法找到任何内容的规则.任何人都知道类命名约定的规则在哪里?

我还需要考虑更多的案例吗?你会用什么正则表达式来匹配一个类名?

我已经使用PHP DOM Document类将其缩小为样式块.

Pet*_*ter 17

请查看http://www.w3.org/TR/CSS21/grammar.html#scanner

根据这个语法和帖子哪些字符在CSS类名/选择器中有效?这应该是扫描css类的正确模式:

\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*\s*\{
Run Code Online (Sandbox Code Playgroud)

注意:标记名称不需要作为css中类的前缀.只是.hello { border: 1; }也有效.

  • 怎么用`[\ w-]`代替`[_a-zA-Z0-9-]`?`\ w`匹配任何*word*字符,即*任何字母或数字或下划线字符*(来自[docs](http://lv.php.net/manual/en/regexp.reference.escape.php) ). (3认同)