Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CSS选择器与Javascript RegExp匹配_Javascript_Css_Regex_Css Selectors - Fatal编程技术网

将CSS选择器与Javascript RegExp匹配

将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 但这只是选择了比它需要的更多的东西。。。就像一个选择器一样,它的所有

基本上,我需要在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

这不是我需要的正则表达式,但是你的懒星帮我做了另一个正则表达式。所以,先生,这对你来说是+1!效果非常好。我只需要在最后添加一个快速“{”就行了。谢谢你,伙计。