如何使用javascript RegExp匹配媒体查询

时间:2012-11-21 08:52:08

标签: javascript regex

我想将这样的字符串与regEx匹配:

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

}

但不知怎的,我不能。 我的注册表开始于/ @media[^{]*\{ /gim 然后想要}}匹配除}}以外的所有内容 /@media[^{]*\{[^}}]*\}(?=})/gim - 这不起作用,因为[^}}] == [^}] ...我不知道如何让regEx像这样工作请帮助

5 个答案:

答案 0 :(得分:1)

Respond.js开始,此处为Demo

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

答案 1 :(得分:0)

你想要这个:

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

here on Regexr

  1. 您不需要m修饰符,它仅适用于锚点^$

  2. 您的意思是s修饰符使.匹配也是换行符。您没有在正则表达式中使用.,但我确实如此。

  3. 使用此构造(?:(?!\}\s*\}).)*可以实现您想要实现的目标只有当它不是}后跟另一个}并且可能有空格时,它才意味着匹配下一个字符之间。负面先行(?!\}\s*\})确保了这一断言。以?:开头的组只是一个非捕获组,没什么特别的。

答案 2 :(得分:0)

你也可以尝试这个/@media[^\(]+[^\)]+\){([^{]+[^}]+})+[^}]+}/ig

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

不是100%确定这是如何工作的,但它似乎(此页面上的其他条目的试用和错误)

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