繁体   English   中英

使用Javascript RegExp匹配CSS选择器

[英]Matching CSS Selectors with a Javascript RegExp

基本上,我需要对CSS文件中的所有CSS选择器进行模式匹配。 理想情况下,它应该能够捕获所有这些规则(以及其他人可以在CSS文件中组成的其他规则)。 如果有帮助,则用于javascript CSS解析器。

#div div .child {

}

.somediv, #someotherdiv {

}

body:hover {

}

到目前为止,我能提出的最好的建议是:

/(#|\.|[a-zA-Z])(.*) {/g

但这最终只会选择超出其所需范围的东西……像一个选择器一样,所有规则都在决定,直到下一个选择器的开头“ {”。 已经尝试了几个小时。 提前致谢!

如果您只关心选择器本身,则应该使您更接近一点。 我认为它与单个空格匹配,因此可以使用更多的调整功能...

var css = ...some css string...
var found = css.replace(/{([^}]*)}/gm,"{}").match(/([#|\.]?)([\w|:|\s|\.]+)/gmi);

我将其更改为懒星,然后重试:

/(#|\.|[a-zA-Z])(.*?) {/g

这样就不会贪心了。

您是否尝试过用否定的字符类替换。*?

/(#|\.|[a-zA-Z])([^{]*) {/g

为了进行大括号匹配,您需要一种比普通的正则表达式所提供的语言更具描述性的语言。 http://www.regular-expressions.info/named.html提供了一些示例,说明了不同的编程语言可以解决“命名组”问题。

您将需要一个解析器,而不仅仅是正则表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM