簡體   English   中英

如何使用JavaScript RegExp匹配媒體查詢

[英]How to match media query with javascript RegExp

我想將這樣的字符串與regEx匹配:

@media only screen and (max-width: 479px){
.abv{style:value;style:value}
.xyz{style:value;style:value}

}

但是我不能。 我的regEx以/ @media[^{]*\\{ /gim開頭,然后想匹配除}}之后的所有內容, }} /@media[^{]*\\{[^}}]*\\}(?=})/gim這不起作用,因為[^}}] == [^}] ...我不知道如何使regEx像這樣工作,請幫助

來自Respond.js演示

@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+[^\}]+\}

你要這個:

/@media[^{]*\{(?:(?!\}\s*\}).)*/gis

在Regexr上查看

  1. 您不需要m修飾符,它僅適用於錨點^$

  2. 您的意思是使用s修飾符制作. 也匹配換行符。 您沒有使用. 在您的正則表達式中,但我做到了。

  3. 使用此構造(?:(?!\\}\\s*\\}).)*意味着僅當它不是}后跟另一個}之間且中間可能有空格時,才匹配下一個字符。 負前瞻(?!\\}\\s*\\})確保了此斷言。 ?:開頭的組只是一個非捕獲組,沒什么特別的。

您也可以嘗試使用此/@media[^\\(]+[^\\)]+\\){([^{]+[^}]+})+[^}]+}/ig

嘗試這個:

@media[^\{]*\{([^\{]+\{[^\}]+\}\n*)*\n*\}

不能100%確定其工作原理,但似乎(此頁面上其他條目的嘗試和錯誤)

/(@media[^{]*{(?:(?!}\s*}).)*}.*?})/s

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM