使用Javascript RegExp匹配CSS选择器

时间:2011-03-30 04:05:17

标签: javascript css regex css-selectors

基本上我需要模式匹配CSS文件中的任何和所有CSS选择器。理想情况下,它应该能够获取所有这些规则(以及任何其他可以在CSS文件中组成的规则)。这是一个javascript CSS解析器,如果这有帮助的话。

#div div .child {

}

.somediv, #someotherdiv {

}

body:hover {

}

迄今为止我能想出的最好的东西是:

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

但这只是最终选择了比它需要的更多......就像一个选择器,它的所有规则,以及直到下一个选择器的开头“{”。用这个试了几个小时。提前谢谢!

4 个答案:

答案 0 :(得分:3)

如果你只关心选择器本身,这应该会让你更接近。我认为它匹配单个空格,所以可以稍微调整一下......

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

答案 1 :(得分:1)

我会把它变成一个懒惰的明星再试一次:

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

这样就不会贪心。

答案 2 :(得分:0)

为了进行大括号匹配,你需要一种比普通的旧正则表达式更具描述性的语言。 http://www.regular-expressions.info/named.html提供了一些关于处理“命名组”问题的不同编程语言的例子。

你需要一个解析器,而不仅仅是你正在做的正则表达式。

答案 3 :(得分:0)

您是否尝试使用否定字符类替换。*

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