我想将这样的字符串与regEx匹配:
@media only screen and (max-width: 479px){
.abv{style:value;style:value}
.xyz{style:value;style:value}
}
但不知怎的,我不能。
我的注册表开始于/ @media[^{]*\{ /gim
然后想要}}
匹配除}}
以外的所有内容
/@media[^{]*\{[^}}]*\}(?=})/gim
- 这不起作用,因为[^}}] == [^}]
...我不知道如何让regEx像这样工作请帮助
答案 0 :(得分:1)
从Respond.js开始,此处为Demo
@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+[^\}]+\}
答案 1 :(得分:0)
你想要这个:
/@media[^{]*\{(?:(?!\}\s*\}).)*/gis
您不需要m
修饰符,它仅适用于锚点^
和$
您的意思是s
修饰符使.
匹配也是换行符。您没有在正则表达式中使用.
,但我确实如此。
使用此构造(?:(?!\}\s*\}).)*
可以实现您想要实现的目标只有当它不是}
后跟另一个}
并且可能有空格时,它才意味着匹配下一个字符之间。负面先行(?!\}\s*\})
确保了这一断言。以?:
开头的组只是一个非捕获组,没什么特别的。
答案 2 :(得分:0)
你也可以尝试这个/@media[^\(]+[^\)]+\){([^{]+[^}]+})+[^}]+}/ig
答案 3 :(得分:0)
试试这个:
@media[^\{]*\{([^\{]+\{[^\}]+\}\n*)*\n*\}
答案 4 :(得分:0)
不是100%确定这是如何工作的,但它似乎(此页面上的其他条目的试用和错误)
/(@media[^{]*{(?:(?!}\s*}).)*}.*?})/s