在JavaScript中使用正则表达式匹配换行符

时间:2011-08-09 17:46:28

标签: javascript css regex parsing

我用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 { }

4 个答案:

答案 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);

Here is a demo

答案 1 :(得分:2)

你必须使用像

这样的东西
{[\S\s]*?}

由于Javascript不知道dotall修饰符s以使.匹配换行符,因此您必须搜索[\S\s]*,这意味着匹配非空白字符(\S)或空白字符(\s)零次或多次。

我将其设为非贪婪的匹配*?,以避免匹配上一个}

在此处查看online on Regexr

答案 2 :(得分:0)

/\w+\s*{[^}]+}/

当我在多行字符串上尝试时,查找简单的CSS块。但是,您必须在其前面的捕获组中添加一些字符,以表示所有可能的标记和选择器标记。

/[\w\*\.#>@ \t]+\s*{[^}]+}/

可能适用于大多数标签,但它不在我的头顶,我可能会错过一些标志。

如果您对http://www.regular-expressions.info/javascript.html

感兴趣,请参阅JS正则表达式语言的限制

答案 3 :(得分:0)

如果你只想要大括号之间的内容:

var m = myCssFileString.match(/\{[^\}]+\}/m);

匹配将包含括号 - 您可以轻松地进行子串和修剪以获得定义的样式。