簡體   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