将CSS选择器与Javascript RegExp匹配
基本上,我需要在CSS文件中匹配任何和所有CSS选择器。理想情况下,它应该能够获取所有这些规则(以及其他任何人可以在CSS文件中创建的规则)。这是一个javascript CSS解析器,如果这有帮助的话将CSS选择器与Javascript RegExp匹配,javascript,css,regex,css-selectors,Javascript,Css,Regex,Css Selectors,基本上,我需要在CSS文件中匹配任何和所有CSS选择器。理想情况下,它应该能够获取所有这些规则(以及其他任何人可以在CSS文件中创建的规则)。这是一个javascript CSS解析器,如果这有帮助的话 #div div .child { } .somediv, #someotherdiv { } body:hover { } 到目前为止,我能想到的最好的方法是: /(#|\.|[a-zA-Z])(.*) {/g 但这只是选择了比它需要的更多的东西。。。就像一个选择器一样,它的所有
#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
这不是我需要的正则表达式,但是你的懒星帮我做了另一个正则表达式。所以,先生,这对你来说是+1!效果非常好。我只需要在最后添加一个快速“{”就行了。谢谢你,伙计。