我用Google搜索并查看了这里,但没有一个答案似乎与我匹配。他们似乎主要回归null
。我正在尝试使用CSS块搜索CSS文件,如:
.twitterfeed p {
background: #fff;
border-radius: 15px;
color: #373737;
font-size: 15px;
margin: 0 10px 20px 10px;
-moz-border-radius: 15px;
padding: 13px;
position: relative;
-webkit-border-radius: 15px
}
我没有制作CSS文件或其他任何东西,所以我不知道它是什么,我不知道是否会有新行或单行如:body { background:color; }
如何匹配整个块,而不匹配其他块?那么,来自something { }
?
答案 0 :(得分:3)
var str = '.twitterfeed p {\
background: #fff;\
border-radius: 15px;\
color: #373737;\
font-size: 15px;\
margin: 0 10px 20px 10px;\
-moz-border-radius: 15px;\
padding: 13px;\
position: relative;\
-webkit-border-radius: 15px\
}';
var matches = str.match(/([^{]+\{[^}]+\})/g);
答案 1 :(得分:2)
你必须使用像
这样的东西{[\S\s]*?}
由于Javascript不知道dotall修饰符s
以使.
匹配换行符,因此您必须搜索[\S\s]*
,这意味着匹配非空白字符(\S
)或空白字符(\s
)零次或多次。
我将其设为非贪婪的匹配*?
,以避免匹配上一个}
在此处查看online on Regexr
答案 2 :(得分:0)
/\w+\s*{[^}]+}/
当我在多行字符串上尝试时,查找简单的CSS块。但是,您必须在其前面的捕获组中添加一些字符,以表示所有可能的标记和选择器标记。
/[\w\*\.#>@ \t]+\s*{[^}]+}/
可能适用于大多数标签,但它不在我的头顶,我可能会错过一些标志。
感兴趣,请参阅JS正则表达式语言的限制答案 3 :(得分:0)
如果你只想要大括号之间的内容:
var m = myCssFileString.match(/\{[^\}]+\}/m);
匹配将包含括号 - 您可以轻松地进行子串和修剪以获得定义的样式。